我有以下构建后事件,它应该将所有 .NET 框架依赖项打包到 .exe 中:
$(SolutionDir)packages\ILRepack.2.0.16\tools\ILRepack.exe
/out:"$(TargetDir)$(TargetName).all.exe"
"$(TargetDir)$(TargetName).exe"
"$(TargetDir)*.dll"
/target:exe
/targetplatform:v4,"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2" /wildcards
但它不能打包所有东西,因为当我在准系统 Windows 7 x64 VM 中运行它时,弹出窗口说需要 .NET。安装 .NET 4.7.2 后一切正常。
这是 ILRepack 输出:
4>------ Rebuild All started: Project: GenerateReport, Configuration: Release Any CPU ------
4> GenerateReport -> C:\code\Thor\Main\pc\tools\ReportGenerator\GenerateReport\bin\Release\GenerateReport.exe
4> INFO: IL Repack - Version 2.0.16
4> INFO: ------------- IL Repack Arguments -------------
4> /out:C:\code\Thor\Main\pc\tools\ReportGenerator\GenerateReport\bin\Release\GenerateReport.all.exe C:\code\Thor\Main\pc\tools\ReportGenerator\GenerateReport\bin\Release\GenerateReport.exe C:\code\Thor\Main\pc\tools\ReportGenerator\GenerateReport\bin\Release\*.dll
4> -----------------------------------------------
4> INFO: Adding assembly for merge: C:\code\Thor\Main\pc\tools\ReportGenerator\GenerateReport\bin\Release\GenerateReport.exe
4> INFO: Adding assembly for merge: C:\code\Thor\Main\pc\tools\ReportGenerator\GenerateReport\bin\Release\ICSharpCode.SharpZipLib.dll
4> INFO: Adding assembly for merge: C:\code\Thor\Main\pc\tools\ReportGenerator\GenerateReport\bin\Release\MDIData.dll
4> INFO: Adding assembly for merge: C:\code\Thor\Main\pc\tools\ReportGenerator\GenerateReport\bin\Release\MDIReporter.dll
4> INFO: Processing references
4> INFO: Processing types
4> INFO: Merging <Module>
4> INFO: Merging <Module>
4> INFO: Merging <Module>
4> INFO: Renaming <PrivateImplementationDetails> into <ea0a2b3c-dc31-41d4-9795-6271bac3aa6b><PrivateImplementationDetails>
4> INFO: Merging <Module>
4> INFO: Processing exported types
4> INFO: Processing resources
4> INFO: Fixing references
4> INFO: Writing output assembly to disk
4> INFO: Finished in 00:00:02.2785005
这是一个使用“任何 CPU”构建的 C# 控制台应用程序。
我的解决方案中的另外两个项目是 .NET 4.7.2 桌面类库。
我也尝试过 ILMerge,但它失败了,因为它引用了它无法遵循的第三方库。我已将该参考作为资源嵌入到我的应用程序中,并且工作正常。