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

C# PublishSingleFile不生成单个可执行文件,c#,visual-studio,.net-core,C#,Visual Studio,.net Core,我有一个.NETCore3控制台应用程序,我正试图将其发布为一个独立的可执行文件。我过去能够做到这一点,但令我惊讶的是,它不再起作用了。项目结构是一个控制台应用程序,有两个程序集,都在Core3中 如果我使用dotnet publish-r win-x64-c Release/p:PublishSingleFile=true/p:PublishTrimmed=true我希望输出是一个大小为几mb的单个可执行文件。但是,发布文件夹包含可执行文件(几百kb)和.dll文件以及.cache文件和pdb

我有一个.NETCore3控制台应用程序,我正试图将其发布为一个独立的可执行文件。我过去能够做到这一点,但令我惊讶的是,它不再起作用了。项目结构是一个控制台应用程序,有两个程序集,都在Core3中

如果我使用
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>

Exe
netcoreapp3.0
最新的
真的
使可能
win-x64
真的
真的
如果我直接从VisualStudio发布应用程序,我会得到与上面相同的结果


因此,我的问题归结为:为什么这个配置或发布语句不会产生一个独立的可执行文件?

根据命令行版本,我测试成功。生成了一个可执行文件。如果您一直未能发布,我建议您使用VS进行发布。发布过程如下:

  <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>
1.右键单击项目->发布

2.更改配置

3.保存配置并单击发布


我可以通过以下方式发布我的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>

释放
任何CPU
..\..\二进制文件\
文件系统
netcoreapp3.1
win-x64
真的
假的
没有一个
如果我将PublishReadyToRun设置为True(或将PublishTrimmed添加为True),则会失败。添加DebugType None会阻止它发布exe的pdb文件


更新:删除自包含标记将停止创建“dotnetcoreapp3.1”文件夹。

我过去可以这样做,但令我惊讶的是,它不再工作。在.NET Core 3中引入了一些选项。尝试删除
/p:PublishTrimmed=true
first@PavelAnikhouski无论是从CLI还是VS.Hello都没有区别,谢谢您的回复,但是正如我提到的,它在命令行和visual studio发布中都失败了。在这两个方面都没有错误。