我有一个 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。
<PublishSingleFile>false</PublishSingleFile>
传统的方法是不使用单个文件。但是,如果您的解决方案分布在多个项目中,这可能无法满足您的需求。此更改将为每个项目提供一个 .DLL,并为您的主应用程序提供一个 .EXE。
您还可以 有选择地从 PublishSingleFile 进程中排除文件
例如,将一些文件放在发布目录中,但不将它们捆绑在文件中:
<ItemGroup>
<Content Update="Plugin.dll">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
</Content>
</ItemGroup>