Visual Studio 2019/.NET 5编译无依赖单Windows Forms项目生成多余DLL,如何生成单一EXE?
解决VS2019 WinForms项目生成单一EXE的问题
嘿,完全不用退回VS2015!这个问题很容易解决,咱们分两种常见情况来处理:
如果你的项目基于.NET Framework
- 右键你的项目,选择「属性」,切换到「应用程序」选项卡
- 确认输出类型设置的是「Windows应用程序」,而不是「类库」——要是不小心选成了类库,编译后就会同时生成exe和dll,改回「Windows应用程序」重新编译,就只会得到单独的exe文件了。
- 要是已经是「Windows应用程序」但还是生成dll,检查下项目里是不是嵌套了其他类库项目?不过你说所有代码都在一个项目里,这种概率很低,大概率还是输出类型的配置问题。
如果你的项目基于.NET Core 3.0+ / .NET 5+(VS2019默认可能创建这类项目)
这种情况下默认编译不会直接产出单一exe,但可以通过发布设置实现:
- 右键项目→「发布」,选择发布目标为「文件夹」
- 在发布设置的「文件发布选项」里,勾选生成单一文件
- 如果你希望客户不用额外安装.NET运行时,可以同时勾选「自包含」;要是客户服务器已经装了对应版本的.NET,选「依赖框架」就行
- 设置完点击「发布」,就能得到一个独立的exe文件了
另外,你也可以用命令行快速发布:
dotnet publish -r win-x64 -p:PublishSingleFile=true --self-contained true
把win-x64换成你需要的平台(比如win-x86)即可。
总结下,VS2019完全能满足你生成单一exe的需求,没必要退回到VS2015~
内容的提问来源于stack exchange,提问作者DaveA




