首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Visual Studio 2017构建的.NET 4.7.2 C#控制台应用程序的ILRepack需要在Windows 7上安装框架

使用Visual Studio 2017构建的.NET 4.7.2 C#控制台应用程序的ILRepack需要在Windows 7上安装框架
EN

Stack Overflow用户
提问于 2018-11-27 05:57:32
回答 1查看 1.4K关注 0票数 0

我有以下构建后事件,它应该将所有.NET框架依赖项打包到.exe中:

代码语言:javascript
复制
$(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

但它不能包罗万象,因为当我在一个简单的Windows7 x64虚拟机中运行它时,弹出窗口显示.NET是必需的。安装.NET 4.7.2后,一切正常。

以下是ILRepack的输出:

代码语言:javascript
复制
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,但它失败了,因为它引用了一个thirdy party库,它不能跟踪它。我已经将该引用作为资源嵌入到我的应用程序中,它工作得很好。

EN

回答 1

Stack Overflow用户

发布于 2018-12-09 07:01:31

ILRepack/ILMerge仅将非.NET框架依赖项合并到最终输出中(除非您特别尝试合并框架程序集)。但是您仍然需要原始的.NET库可用。因此,如果您使用4.7.2,则需要在目标计算机上使用4.7.2。

如果你的目标是尝试“降低”目标.NET框架版本(也就是说,它在Windows7上不需要任何东西就能运行),那么这将不会起作用,你将不得不瞄准.NET 4.0 (这是Windows 7更新后的默认版本)。

如果你想要一个不需要额外安装的自包含的可执行文件,你应该看看.NET Core,它与应用程序一起提供了.NET框架。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53489722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档