gpt4 book ai didi

c# - PublishSingleFile 不生成单个可执行文件

转载 作者:行者123 更新时间:2023-12-04 04:02:14 26 4
gpt4 key购买 nike

我有一个 .Net Core 3 控制台应用程序,我试图将它发布为一个独立的单个可执行文件。过去我已经能够做到这一点,但令我惊讶的是它不再有效。项目结构是一个带有两个程序集的控制台应用程序,都在 Core 3 中。
如果我使用 dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true /p:PublishTrimmed=true我希望输出是几个 mb 大小的单个可执行文件。然而,发布文件夹包含可执行文件(几百 kb)和一个 .dll 文件以及 .cache 文件和 pdb。
我的控制台应用程序的配置如下:

  <PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<LangVersion>latest</LangVersion>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<Nullable>enable</Nullable>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<PublishSingleFile>true</PublishSingleFile>
<PublishTrimmed>true</PublishTrimmed>
</PropertyGroup>
如果我直接从 Visual Studio 发布应用程序,我会得到与上面相同的结果。
所以我的问题归结为:为什么此配置或发布语句不会产生自包含的单个可执行文件?

最佳答案

我可以使用以下内容发布我的 3.1 控制台应用程序:

<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration>Release</Configuration>
<Platform>Any CPU</Platform>
<PublishDir>..\..\Binaries\</PublishDir>
<PublishProtocol>FileSystem</PublishProtocol>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<PublishSingleFile>True</PublishSingleFile>
<PublishReadyToRun>False</PublishReadyToRun>
<DebugType>None</DebugType>
</PropertyGroup>
</Project>
如果我将 PublishReadyToRun 设置为 True(或将 PublishTrimmed 添加为 True),它会失败。添加 DebugType None 会阻止它发布 exe 的 pdb 文件。
更新:删除 SelfContained 标签会阻止它创建“dotnetcoreapp3.1”文件夹。

关于c# - PublishSingleFile 不生成单个可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62909829/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com