在我的一生中,我似乎无法将我的 .NET 4 应用程序与 ILMerge 正确合并。即使在设置 /targetplatform、/lib、/ndebug 之后and添加自定义 ILMerge.exe.config 文件后,输出文件无法正常工作(它似乎无法“找到”合并的库)。
我试过了this and this无济于事。除非使用配置文件,否则我什至无法构建它,但是当我这样做时它不起作用。如果没有配置文件,我总是收到错误消息“不允许未解析的程序集引用:PresentationFramework".
以下是用作构建后事件的 ILMerge 命令的当前状态:
ilmerge.exe /out:C:\Users\Logan\Development\Projects\OrangeNote\OrangeNote\bin\Release\OrangeNote.exe
/ndebug /targetplatform:v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319
/lib:"C:\Windows\Microsoft.NET\Framework\v4.0.30319"
/lib:"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies"
"C:\Users\Logan\Development\Projects\OrangeNote\OrangeNote\obj\Release\OrangeNote.exe"
"C:\Users\Logan\Development\Projects\OrangeNote\OrangeNote\..\..\..\Libraries\Lucene.Net\src\Lucene.Net\bin\Release\Lucene.Net.dll"
"C:\Users\Logan\Development\Projects\OrangeNote\OrangeNote\..\..\..\Libraries\Ookii.Dialogs\src\Ookii.Dialogs.Wpf\bin\Release\Ookii.Dialogs.Wpf.dll"
"C:\Users\Logan\Development\Projects\OrangeNote\OrangeNote\..\..\..\Libraries\SharpZipLib\bin\ICSharpCode.SharpZipLib.dll"
"C:\Users\Logan\Documents\Visual Studio 2010\Projects\HumanInterfaceProject\HumanInterfaceProject\bin\Release\HipLib.dll"
对我做错了什么有什么想法吗?
我见过的在 WPF 中组合 .dll 的一个建议是简单地将 dll 添加为项目的嵌入式资源,然后以编程方式将 dll 加载到程序集中。
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => {
String resourceName = "AssemblyLoadingAndReflection." +
new AssemblyName(args.Name).Name + ".dll";
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) {
Byte[] assemblyData = new Byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
return Assembly.Load(assemblyData);
}
};
see:
http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)