不允许使用IL MergeGUI未解析的程序集引用

时间:2018-09-17 20:53:12

标签: c# reporting ilmerge

我遇到了一个问题。我连续三天都无法解决问题。该项目需要报告,因此我将注意力转向了NuGet Microsoft.Reporting.WinForms.v11。通过将其添加到项目中,我不再能够在一个exe文件中收集所有dll库。 IL Merge显示错误。

帮助,谢谢。

IL MergeGUI error

  

记录IL MergeGUI

     

将2个Win32资源从程序集“ AtlantCRM”复制到目标程序集中。   将入口点“ AtlantCRM.Program.Main”从程序集“ AtlantCRM”转移到程序集“ AtlantCRM”。       目标程序集的元数据中未报告任何错误。   ILMerge:编写目标程序集“ C:\ Users \返回名称\ Desktop \ AtlantCRM.exe”。   AssemblyResolver:程序集“ AtlantCRM”引用程序集“ PresentationFramework”。       AssemblyResolver:尝试引用程序集的目录。       AssemblyResolver:在引用程序集的目录中找不到程序集。       AssemblyResolver:尝试输入目录。       AssemblyResolver:在输入目录中找不到程序集。       AssemblyResolver:尝试用户提供的目录。       AssemblyResolver:没有用户提供的目录。       AssemblyResolver:尝试框架目录。       AssemblyResolver:在框架目录中找不到程序集。   AssemblyResolver:无法解析引用。 (例如,仍可以在GAC中找到它。)   AssemblyResolver:程序集“ PresentationFramework”引用程序集“ PresentationCore”。       AssemblyResolver:尝试引用程序集的目录。       AssemblyResolver:在引用程序集的目录中找不到程序集。       AssemblyResolver:尝试输入目录。       AssemblyResolver:在输入目录中找不到程序集。       AssemblyResolver:尝试用户提供的目录。       AssemblyResolver:没有用户提供的目录。       AssemblyResolver:尝试框架目录。       AssemblyResolver:在框架目录中找不到程序集。   AssemblyResolver:无法解析引用。 (例如,仍可以在GAC中找到它。)   AssemblyResolver:程序集“ PresentationCore”引用了程序集“ WindowsBase”。       AssemblyResolver:尝试引用程序集的目录。       AssemblyResolver:在引用程序集的目录中找不到程序集。       AssemblyResolver:尝试输入目录。       AssemblyResolver:在输入目录中找不到程序集。       AssemblyResolver:尝试用户提供的目录。       AssemblyResolver:没有用户提供的目录。       AssemblyResolver:尝试框架目录。       AssemblyResolver:在框架目录中找不到程序集。   AssemblyResolver:无法解析引用。 (例如,仍可以在GAC中找到它。)   AssemblyResolver:程序集'PresentationFramework'引用程序集'System.Xaml'。       AssemblyResolver:尝试引用程序集的目录。       AssemblyResolver:在引用程序集的目录中找不到程序集。       AssemblyResolver:尝试输入目录。       AssemblyResolver:在输入目录中找不到程序集。       AssemblyResolver:尝试用户提供的目录。       AssemblyResolver:没有用户提供的目录。       AssemblyResolver:尝试框架目录。   已将程序集引用“ System.Xaml”解析为“ C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ System.Xaml.dll”。 (使用的框架目录。)   AssemblyResolver:程序集“ Bunifu_UI_v1.5.4”正在引用程序集“ System.Management”。       AssemblyResolver:尝试引用程序集的目录。       AssemblyResolver:在引用程序集的目录中找不到程序集。       AssemblyResolver:尝试输入目录。       AssemblyResolver:在输入目录中找不到程序集。       AssemblyResolver:尝试用户提供的目录。       AssemblyResolver:没有用户提供的目录。       AssemblyResolver:尝试框架目录。   已将程序集引用“ System.Management”解析为“ C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ System.Management.dll”。 (使用的框架目录。)   AssemblyResolver:程序集'System.Xml'引用程序集'System.Data.SqlXml'。       AssemblyResolver:尝试引用程序集的目录。   已将程序集引用“ System.Data.SqlXml”解析为“ C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ System.Data.SqlXml.dll”。 (用于引用模块的目录。)   AssemblyResolver:程序集“ System.Data”引用程序集“ System.EnterpriseServices”。       AssemblyResolver:尝试引用程序集的目录。   已将程序集引用“ System.EnterpriseServices”解析为“ C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ System.EnterpriseServices.dll”。 (用于引用模块的目录。)

1 个答案:

答案 0 :(得分:1)

您可能不想听到此消息,但是ilmergeGUI已过时。 .net 4.6确实破坏了它,此后情况变得更糟。我强烈建议改用CMD进行编译。您将对合并的过程有更多的控制和了解。

编辑:很抱歉不包含该链接。可以在here中找到Ilmerge文档。第1节和第2节是关于如何在代码中使用它的,而第3节是我所指的内容。

说明:

打开一个Command Prompt

如果您没有在Windows中设置路径来查找ilmerge命令,则每次打开命令提示符时都可能需要设置路径(假设安装位置是典型位置):

SET PATH=%PATH%;C:\Program Files (x86)\Microsoft\ILMerge

然后,您只需按照我上面链接的文档运行ilmerge命令即可。

示例:

ilmerge /targetplatform:v4,"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1" /out:"C:\Users\my\Documents\VerificationsMerged.dll" Verifications.dll Newtonsoft.Json.dll

此示例使用.netframework版本4.6.1,但是您可以将其指向其他版本,然后将Verifications.dll和Newtonsoft.Json.dll合并在一起(请注意,这些假定位于您计算机的当前文件夹中)命令提示符,您可以提供一个绝对路径),然后将VerificationsMerged.dll保存到我的文档文件夹中。