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

.NET 8项目构建单EXE并分离NuGet包DLL的技术问询

.NET 8项目实现单EXE+分离NuGet依赖DLL的配置方案

要实现单EXE输出同时将NuGet依赖的DLL单独分离,你需要调整.csproj的配置,确保依赖库被复制到发布目录而非嵌入到EXE中。

调整.csproj配置

在项目的<PropertyGroup>节点中添加以下配置:

<SelfContained>false</SelfContained>
<PublishSingleFile>true</PublishSingleFile>
<DebugType>embedded</DebugType>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<ExcludeFromSingleFile>$(OutputPath)/**/*.dll</ExcludeFromSingleFile>

各配置项的作用:

  • SelfContained>false:不打包.NET 8运行时,依赖系统已安装的对应版本Runtime
  • PublishSingleFile>true:生成单个可执行主文件
  • DebugType>embedded:将调试信息嵌入EXE,避免生成独立的.pdb文件
  • CopyLocalLockFileAssemblies>true:强制将NuGet包对应的DLL复制到发布目录
  • ExcludeFromSingleFile>$(OutputPath)/**/*.dll:指定这些复制出来的DLL不嵌入到单EXE文件内

发布项目

你可以通过两种方式发布:

  • Visual Studio发布向导:右键项目→发布,选择目标平台(如Windows x64),确保发布配置匹配上述.csproj设置
  • 命令行发布:执行以下命令(替换目标运行时标识为你需要的平台,如linux-x64、osx-x64):
dotnet publish -c Release -r win-x64

注意事项

  • 发布后目录会包含单个EXE、所有NuGet依赖DLL,以及.deps.json、.runtimeconfig.json等必需的配置文件,这些配置文件不能删除
  • 如果项目包含原生依赖库(如C++编写的DLL),需额外添加<IncludeNativeLibrariesForSelfExtract>false</IncludeNativeLibrariesForSelfExtract>到PropertyGroup,确保原生库也被分离输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:42:19