Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 无法使用ILMerge加载DLL mscorsn.DLL_.net_Visual Studio_Ilmerge - Fatal编程技术网

.net 无法使用ILMerge加载DLL mscorsn.DLL

.net 无法使用ILMerge加载DLL mscorsn.DLL,.net,visual-studio,ilmerge,.net,Visual Studio,Ilmerge,我正在尝试编译一个项目,该项目使用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..

我正在尝试编译一个项目,该项目使用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.MSCorNStrong NameSignatureGeneration(字符串wszFilePath、字符串wszKeyContainer、字节[]pbKeyBlob、Int32 cbKeyBlob、IntPtr ppbSignatureBlob、IntPtr pcbSignatureBlob) 位于System.Compiler.Writer.WritePE(字符串位置、布尔writeDebugSymbols、模块模块、布尔延迟符号、字符串keyFileName、字符串keyName) 在System.Compiler.Writer.WritePE(编译器参数编译器参数模块) 在ILMerging.ILMerge.Merge()处 在ILMerging.ILMerge.Main处(字符串[]args)

我的生成后事件参数是:

如果“$(ConfigurationName)”==“调试无ILMerge”转到:退出
REM****创建ILMerge目录****
md“$(TargetDir)IlMerge”
REM****删除以前的日志****
del“$(TargetDir)IlMerge\Log.txt”
REM****运行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)$(TargetDir)Applications.Web.Security.dll”“$(TargetDir.Domain.dll”“$(TargetDir)Newtonsoft.Json.dll”
:退出

我可以在计算机上手动找到mscorsn.dll并将其放入本地文件夹。ILMerge会选择它,但取决于我使用的版本(Windows中有4-5个不同的副本),它要么会完全失败,要么会声明无法对最终dll进行签名


我已尝试将
targetplatform
指向包含mscorsn.dll文件的特定.NET文件夹,但无效。

我找到了答案。似乎ILMerge需要.NET3.5,而默认情况下,Windows8、8.1或10上不需要.NET3.5。安装.NET3.5之后,ILMerge工作得非常好

  • 程序和功能->
  • 打开或关闭Windows功能->
  • .NET Framework 3.5(包括.NET 2.0和3.0)

    • 我找到了答案。似乎ILMerge需要.NET3.5,而默认情况下,Windows8、8.1或10上不需要.NET3.5。安装.NET3.5之后,ILMerge工作得非常好

      • 程序和功能->
      • 打开或关闭Windows功能->
      • .NET Framework 3.5(包括.NET 2.0和3.0)

      我也有同样的问题。我也有同样的问题。