构建 .Net 单个文件,无需 NuGet 包的 DLL

问题描述 投票:0回答:1

我有一个 C# .NET 8.0 项目,其中有很多引用的 NuGet 包。

现在,我想将其构建为单个

.exe
,并使用 NuGet 包的独立 .dll。

到目前为止,MSBuild 进程为我的项目生成了多个文件:.application、.deps.json、.dll、.dll.manifest、.exe、.pdb 和 .runtimeconfig.json。

.csproj
中的
<PropertyGroup>
文件内,我定义了以下内容:

<SelfContained>false</SelfContained>
<PublishSingleFile>true</PublishSingleFile>
<DebugType>embedded</DebugType>

但这会生成一个

.exe
,而不会为 NuGet 包提供单独的 .dll 文件。

我预计文件大小约为 5 MB。

c# msbuild .net-8.0
1个回答
-1
投票
<PublishSingleFile>false</PublishSingleFile>

传统的方法是使用单个文件。但是,如果您的解决方案分布在多个项目中,这可能无法满足您的需求。此更改将为每个项目提供一个 .DLL,并为您的主应用程序提供一个 .EXE。

您还可以 有选择地从 PublishSingleFile 进程中排除文件

例如,将一些文件放在发布目录中,但不将它们捆绑在文件中:

<ItemGroup>
  <Content Update="Plugin.dll">
 
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
 
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
  </Content>
</ItemGroup>
© www.soinside.com 2019 - 2024. All rights reserved.