Visual Studio构建.NET Core 2.0项目无法生成.exe文件求助
我来帮你理清这个困惑——在.NET Core 2.0中,控制台项目默认生成.dll文件其实是框架的正常设计,和你设置的输出类型关联不大,这和传统.NET Framework的控制台项目逻辑有区别。
背后的原因
.NET Core默认采用「框架依赖」的部署模式:你的项目编译后产出的.dll是跨平台的中间代码,运行时依赖目标机器上已安装的.NET Core Runtime,通过命令dotnet YourProject.dll就能直接执行程序。而传统.NET Framework的.exe是把运行时相关部分打包在内,这是两种框架的核心差异之一。
生成独立.exe文件的两种方法
方法一:使用dotnet publish命令生成独立可执行文件
打开终端(或Visual Studio的「包管理器控制台」),进入你的项目根目录,执行以下命令:
dotnet publish -c Release -r win-x64 --self-contained true
-c Release:指定发布Release版本(也可以用Debug调试版本)-r win-x64:指定目标运行时平台(Windows 64位,其他平台可替换为linux-x64、osx-x64等)--self-contained true:将.NET Core Runtime一起打包,生成的.exe无需依赖目标机器的.NET Core环境即可独立运行
执行完成后,你可以在bin/Release/netcoreapp2.0/win-x64/publish目录下找到对应的.exe文件。
方法二:修改项目文件(.csproj)配置
打开你的项目.csproj文件,在<PropertyGroup>节点中添加以下配置:
<RuntimeIdentifier>win-x64</RuntimeIdentifier> <SelfContained>true</SelfContained>
保存后重新构建项目,此时在构建输出目录(比如bin/Release/netcoreapp2.0/win-x64)中也会生成.exe文件。注意:指定RuntimeIdentifier后,项目将只能在对应的平台运行。
关于输出类型设置的说明
你尝试修改「输出类型」为Windows应用程序或类库仍生成.dll,是因为在.NET Core中,这个设置主要影响IDE的调试行为(比如是否显示控制台窗口),而非决定最终生成的文件类型。类库本身就是.dll,而控制台/Windows应用在框架依赖模式下依然产出.dll,只有切换到独立部署模式时才会生成.exe。
内容的提问来源于stack exchange,提问作者Benjamin Creem

