.net core “无法理解”;“单文件可执行文件”;网络核心3的特点

.net core “无法理解”;“单文件可执行文件”;网络核心3的特点,.net-core,.net Core,在学习如何在NetCore3.1中工作时,我创建了NetCore3.1C#控制台应用程序。如果我编译VS创建的默认项目,我可以看到这组文件 为了运行这个控制台应用程序,我必须分发3个文件-ConsoleNetCore.exe/dll/runtimeconfig 现在我想改进一个发行版故事,我更喜欢只发行一个文件,所以我没有exe和dll,只有一个exe。如上链接所述,通过添加以下属性修改了我的项目文件: <RuntimeIdentifier>win10-x64</Runtim

在学习如何在NetCore3.1中工作时,我创建了NetCore3.1C#控制台应用程序。如果我编译VS创建的默认项目,我可以看到这组文件

为了运行这个控制台应用程序,我必须分发3个文件-ConsoleNetCore.exe/dll/runtimeconfig

现在我想改进一个发行版故事,我更喜欢只发行一个文件,所以我没有exe和dll,只有一个exe。如上链接所述,通过添加以下属性修改了我的项目文件:

<RuntimeIdentifier>win10-x64</RuntimeIdentifier>
<PublishSingleFile>true</PublishSingleFile>
win10-x64
真的
因此,整个项目文件是:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RuntimeIdentifier>win10-x64</RuntimeIdentifier>
    <PublishSingleFile>true</PublishSingleFile>
  </PropertyGroup>
</Project>

Exe
netcoreapp3.1
win10-x64
真的
然后我重建了这个项目,注意到netcoreapp3.1下有一个额外的文件夹win10-x64,里面有226个文件,主要是DLL,包括ConsoleNetCore.exe。我从那里复制了exe,并将其放在c:\temp下运行,结果发现错误:

要执行的应用程序不存在:“c:\Temp\ConsoleNetCore.dll”

然后,我复制了该dll并再次尝试运行exe,这次得到:

遇到致命错误。在“C:\Program Files\dotnet”中找不到执行应用程序所需的库“hostpolicy.dll”


显然,我无法生成单个文件的可执行文件,我希望只生成一个exe文件,而不是其他文件,这样我就可以简单地分发该文件,我是否误解了此功能?如何制作一个真正的不需要任何其他文件的可执行文件?

我意识到仅仅重建是不够的,我实际上应该在Visual Studio(或tools命令行)中发布:


我意识到仅仅重建是不够的,我实际上应该从Visual Studio(或工具命令行)中发布: