标签: ilmerge

使用ILMerge时无法加载mscorsn.dll

我在具有管理员权限的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是否存在; 它存在.

那么,问题可能是什么?你能帮忙吗?

.net ilmerge snk

3
推荐指数
1
解决办法
2909
查看次数

ILMerge实际上是合并程序集,还是只将所有内容放在一个文件中?

ILMerge做什么?

它是创建一个新的程序集,还是只将多个程序集放入一个dll中?

我是从以下角度问:

  • 当我合并具有InternalsVisibleTo彼此属性的程序集时会发生什么?
  • 如果我从完全限定的程序集名称中进行字符串反射,会发生什么

谢谢

.net ilmerge

2
推荐指数
1
解决办法
710
查看次数

是否可以成功将传递程序集引用与ILMerge合并?

我正在尝试使用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完成的是什么?

.net ilmerge antlr stringtemplate

1
推荐指数
2
解决办法
3339
查看次数

需要合并Dll并创建单个程序集

我试图部署一个winforms应用程序.目前我打算将Dlls和Executable打包成一个大小约为12MB的单个Exe(压缩).这是标准程序吗?这种方法有一些缺点吗?

.net c# dll ilmerge

1
推荐指数
1
解决办法
416
查看次数

无法使用ILMerge加载DLL mscorsn.dll

我正在尝试编译一个使用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文件夹,但无济于事。

.net ilmerge visual-studio

1
推荐指数
1
解决办法
2329
查看次数

合并的DLL,Intellisense没有选择单独的XML doc文件

我使用ILMerge将我的几个C#项目DLL合并到一个DLL中,用于整个解决方案.我让每个项目为Intellisense生成其文档的.XML文件,当我尝试使用我的合并DLL作为另一个解决方案的参考时,我无法显示这些注释.我将这些文件都放在同一目录中:

  • MergedProjectDlls.dll
  • Project1.XML
  • Project2.XML
  • Project3.XML
  • Project4.XML

我尝试将单个项目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

0
推荐指数
1
解决办法
1153
查看次数

ILMerge 和项目参考

我有一个具有以下结构的 VS 解决方案 (.sln)。

  • 项目A
  • 项目 B(包含对项目 A 的引用以及对 NHibernate、StructureMap 等 3rd 方程序集的引用)

我想使用 ILMerge 将 3rd 方程序集滚动到 ProjectB.dll 中。但是,我不想合并 ProjectA。

我已经使用了此处突出显示的程序。在合并第三方程序集方面,这对我来说非常有效。但是,在构建 ProjectB 时我仍然收到此错误:

合并期间发生异常:不允许未解析的程序集引用:ProjectA。

我没有明确指定 ProjectA 被合并。换句话说,我不认为这个项目是真的。如何让 IlMerge 忽略 ProjectA?顺便说一下,ProjectA 是一个项目引用,而不是一个直接的程序集引用。

谢谢!

.net ilmerge assemblies

0
推荐指数
1
解决办法
4483
查看次数

有没有像工具那样可以合并wpf程序集的免费ilmerge?

我正在寻找一个免费工具将我的所有wpf应用程序的程序集合并到一个程序集中.通常,我使用ILMerge,但不幸的是,它不支持合并WPF程序集.有没有可以实现这一目标的工具?

商业工具对我来说不是一个选项,因为该应用程序是一个开源项目.


诚挚的问候,Oliver Hanappi

.net wpf ilmerge fody-costura

0
推荐指数
1
解决办法
1093
查看次数

使用Ilmerge在.NET中组合多个dll

请问如何使用ILMerge将多个dll组合成一个.

c# ilmerge

0
推荐指数
1
解决办法
1万
查看次数

MSBuild.ILMerge.Task不允许重复类型

我通过调用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需要什么?

.net c# msbuild ilmerge static-linking

0
推荐指数
1
解决办法
1512
查看次数