我在具有管理员权限的cmd上使用以下命令:
ILMerge.exe /wildcards /log:ILMerge.log /allowdup
/targetplatform:"v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319"
/lib:"C:\SDK2016\SDK2016\Bin"
/lib:"packages\Microsoft.CrmSdk.Extensions.7.1.0.1\lib\net45"
/lib:"packages\log4net.2.0.5\lib\net45-full"
/keyfile:"Tools\Snk\XXX.snk"
/out:"c:\XXXALLMERGED.dll"
"c:\proj\alldlls\*.dll"
Run Code Online (Sandbox Code Playgroud)
我在日志文件的末尾收到以下错误:
An exception occurred during merging:
Unable to load DLL 'mscorsn.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
at System.Compiler.Writer.MscorsnStrongNameSignatureGeneration(String wszFilePath, String wszKeyContainer, Byte[] pbKeyBlob, Int32 cbKeyBlob, IntPtr ppbSignatureBlob, IntPtr pcbSignatureBlob)
at System.Compiler.Writer.WritePE(String location, Boolean writeDebugSymbols, Module module, Boolean delaySign, String keyFileName, String keyName)
at System.Compiler.Writer.WritePE(CompilerParameters compilerParameters, Module module)
at ILMerging.ILMerge.Merge()
at ILMerging.ILMerge.Main(String[] args)
Run Code Online (Sandbox Code Playgroud)
由于我的targetframework是v4而我的文件夹是"v4,C:\ Windows\Microsoft.NET\Framework\v4.0.30319",我检查了mscorsn.dll是否存在; 它存在.
那么,问题可能是什么?你能帮忙吗?
ILMerge做什么?
它是创建一个新的程序集,还是只将多个程序集放入一个dll中?
我是从以下角度问:
InternalsVisibleTo
彼此属性的程序集时会发生什么?谢谢
我正在尝试使用ILMerge将一些可传递引用的程序集内化到我正在引用的程序集中,以消除与我的项目中的那些传递依赖项的冲突.
特别是,我引用了Antlr3.StringTemplate(以下简称AS,可在此处获取:http://www.stringtemplate.org/download.html).它引用了Antlr3.Runtime.Debug(ARD)和Antlr3.Runtime(AR).ARD本身也引用了AR.在ASCII艺术中,那是:
AS ---> ARD
\ |
\ v
\---> AR
Run Code Online (Sandbox Code Playgroud)
因为我正在使用的另一个程序集NHibernate 2.1依赖于不同的,不兼容的AR版本,我想使用ILMerge将AR合并并内化到AS中.从理论上讲,我认为这应该有效; 但是,我在执行理论时遇到了麻烦.
无论我尝试什么样的排列和选项,我最终都会遇到以下形式的错误:
ILMerge.Merge:程序集'Antlr3.Runtime.Debug'未正确合并.它仍然在目标程序集中列为外部引用.
我想用ILMerge完成的是什么?
我试图部署一个winforms应用程序.目前我打算将Dlls和Executable打包成一个大小约为12MB的单个Exe(压缩).这是标准程序吗?这种方法有一些缺点吗?
我正在尝试编译一个使用ILMerge将多个DLL组合在一起的项目,然后对它们进行签名以部署到CRM。代码已编译,但是ILMerge失败。此过程适用于其他开发人员的计算机,但不适用于我的计算机。
我正在使用Visual Studio 2015,Windows 10并针对.NET 4.5.2。进行构建。
所有项目都使用AnyCPU进行编译。
已将程序集引用“ System.Runtime.Caching”解析为“ C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 .. \ v4.0.30319 \ System.Runtime.Caching.dll”。(使用的框架目录。)
合并过程中发生异常:无法加载DLL'mscorsn.dll':找不到指定的模块。(来自HRESULT的异常:0x8007007E)位于System.Compiler.Writer.MscorsnStrongNameSignatureGeneration(String wszFilePath,String wszKeyContainer,Byte [] pbKeyBlob,Int32 cbKeyBlob,IntPtr ppbSignatureBlob,IntPtr pcbSymBerWerWerBlockSymPerWilBerWilBerWilBerWilBerWilBerWilBerWonderWonderWonderWonder(PRESSION) ,模块模块,布尔型delaySign,字符串keyFileName,字符串keyName),位于System.Compiler.Writer.WritePE(CompilerParameters编译器参数,模块模块),位于ILMerging.ILMerge.Merge(),位于ILMerging.ILMerge.Main(String [] args)
我的构建后事件参数是:
if "$(ConfigurationName)" == "Debug No ILMerge" goto :exit
REM **** Create ILMerge Directory ****
md "$(TargetDir)IlMerge"
REM **** Delete Previous Log ****
del "$(TargetDir)IlMerge\Log.txt"
REM **** Run IlMerge ****
"$(SolutionDir)packages\ILMerge.2.14.1208\tools\ILMerge.exe" /log:"$(TargetDir)IlMerge\Log.txt" /keyfile:"$(ProjectDir)Client.Xrm.Plugins.Key.snk" /targetplatform:v4 /out:"$(TargetDir)IlMerge\$(TargetFileName)" "$(TargetPath)" "$(TargetDir)DLaB.Common.dll" "$(TargetDir)DLaB.Xrm.2015.dll" "$(TargetDir)Client.Xrm.dll" "$(TargetDir)Applications.Web.Security.dll" "$(TargetDir).Domain.dll" "$(TargetDir)Newtonsoft.Json.dll"
:exit
我可以在计算机上手动找到mscorsn.dll,并将其放入本地文件夹。ILMerge会选择它,但是根据我使用的版本(Windows中有4-5个不同的副本),它可能会完全失败或说明无法签署最终的dll。
我尝试将其targetplatform
指向具有mscorsn.dll文件的特定.NET文件夹,但无济于事。
我使用ILMerge将我的几个C#项目DLL合并到一个DLL中,用于整个解决方案.我让每个项目为Intellisense生成其文档的.XML文件,当我尝试使用我的合并DLL作为另一个解决方案的参考时,我无法显示这些注释.我将这些文件都放在同一目录中:
我尝试将单个项目XML文件重命名为MergedProjectDlls.XML,然后在Visual Studio中删除并重新添加引用,但是Intellisense仍然没有接受我在已重命名的项目XML文件中存在的注释.
我希望以某种方式将所有这些项目XML文件合并到一个名为MergedProjectDlls.XML的文件中.那可能吗?当Intellisense与MergedProjectDlls.dll位于同一目录时,它会自动接收吗?
编辑:刚刚在MSDN上找到了这个:
要使用生成的.xml文件与IntelliSense功能一起使用,请让.xml文件的文件名与要支持的程序集相同,然后确保.xml文件与程序集位于同一目录中.因此,在Visual Studio项目中引用程序集时,也会找到.xml文件.
并且:
除非使用/ target:module进行编译,否则file将包含指定包含编译输出文件的程序集清单的文件名的标记."
intellisense ilmerge build-process xml-documentation visual-studio
我有一个具有以下结构的 VS 解决方案 (.sln)。
我想使用 ILMerge 将 3rd 方程序集滚动到 ProjectB.dll 中。但是,我不想合并 ProjectA。
我已经使用了此处突出显示的程序。在合并第三方程序集方面,这对我来说非常有效。但是,在构建 ProjectB 时我仍然收到此错误:
合并期间发生异常:不允许未解析的程序集引用:ProjectA。
我没有明确指定 ProjectA 被合并。换句话说,我不认为这个项目是真的。如何让 IlMerge 忽略 ProjectA?顺便说一下,ProjectA 是一个项目引用,而不是一个直接的程序集引用。
谢谢!
我正在寻找一个免费工具将我的所有wpf应用程序的程序集合并到一个程序集中.通常,我使用ILMerge,但不幸的是,它不支持合并WPF程序集.有没有可以实现这一目标的工具?
商业工具对我来说不是一个选项,因为该应用程序是一个开源项目.
最
诚挚的问候,Oliver Hanappi
我通过调用ILMerge收到以下错误.
ILMerge.Merge:ERROR !!:在程序集"System.Net.Http.Formatting"中找到重复类型"System.Net.Http.HttpRequestMessageExtensions".你想使用/ alllowDup选项吗?
你会认为这很容易解决.错误消息说明要做什么.
但是我对ILMerge的调用是由MSBuild.ILMerge.Task完成的
似乎我已经做了我需要做的事情来实现这一目标......
从我的ILMerge.props文件:
<!-- added in Version 1.0.4, default=none -->
<ILMergeAllowDuplicateType>true</ILMergeAllowDuplicateType>
Run Code Online (Sandbox Code Playgroud)
`我收到有关此属性文件验证的警告,但没有任何其他方法可以阻止构建.那么将它传达给ILMerge需要什么?
ilmerge ×10
.net ×8
c# ×3
antlr ×1
assemblies ×1
dll ×1
fody-costura ×1
intellisense ×1
msbuild ×1
snk ×1
wpf ×1