You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将.NET Core 2.1 Web应用部署为Windows服务时生成DLL而非EXE

问题分析与解决方案

你碰到的这个情况是.NET Core 2.x默认部署模式导致的——默认的**依赖框架部署(FDD)只会生成.dll文件,因为它依赖目标机器上已安装的.NET Core运行时。如果想要生成可直接执行的.exe文件,你需要切换到独立部署(SCD)**模式,或者在发布时明确指定目标运行时。

下面给你两种具体的解决方法:

方法1:命令行发布时指定运行时

执行dotnet publish命令时,加上目标Windows运行时参数即可,比如针对64位Windows系统:

dotnet publish -c Release -r win-x64

参数说明:

  • -c Release:指定发布Release版本(你之前用的是Debug模式,发布服务建议用Release,性能和稳定性更优)
  • -r win-x64:指定目标运行时为64位Windows,发布后会生成对应的.exe文件,同时打包所有必要的.NET Core运行时文件,目标机器无需预先安装.NET Core就能运行。

方法2:修改项目文件默认配置

如果你希望每次发布都默认生成独立部署的EXE,可以在.csproj文件中添加以下配置:

<PropertyGroup>
  <RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>

添加完成后,直接执行dotnet publish -c Release就能生成带.exe的发布包了。

额外补充

其实就算只有.dll文件,你的ASP.NET Core项目也能正常作为Windows服务安装运行:

  1. 确保目标机器安装了对应版本的.NET Core 2.1运行时(需和你使用的RC1版本匹配)
  2. 使用sc create命令安装服务时,将dotnet.exe作为启动程序,项目DLL作为参数,示例:
sc create "VoyDashServerService" binPath= "C:\Program Files\dotnet\dotnet.exe C:\Temp\VoyDashServer\publish\VoyDashServer.dll"

内容的提问来源于stack exchange,提问作者kofifus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:36:15