从 .net-core-2.2 升级到 .net-core-3.1 后,我发布的应用程序的输出目录中的 dotnet.exe 是什么?

What is this dotnet.exe in the outputdir of my published application after upgrading from .net-core-2.2 to .net-core-3.1?

我们有一个使用 httpssys 的 .NET Core Web 应用程序。我们正在将它从 .NET Core 2.2 升级到 .NET Core 3.1,我在输出目录中观察到一些奇怪的东西。

.csproj(相关部分)是

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup Label="Globals">
    <Platforms>x64</Platforms>
  </PropertyGroup>

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RuntimeIdentifier>win7-x64</RuntimeIdentifier>
    <OutputType>Exe</OutputType>
  </PropertyGroup>

项目已发布,参数如下:

dotnet publish -c release -o .\pkg .\SomeProject.csproj

在将 TargetFramework 更改为 netcoreapp3.1(它是 netcoreapp2.2)之前,输出文件夹不包含 dotnet.exe。但是,自升级以来它确实如此。而且看起来有点奇怪,因为 exe 的日期是 15-6-2016,版本号是 1.0.1.4500。

我找不到关于此更改的任何文档。为什么这个可执行文件在我的输出目录中,为什么会发生变化?

我们遇到的问题是由 nuget 包引起的 ChilkatDnCore。它依赖于 Microsoft.NETCore.App (>= 1.0.5)。在 .NET Core 2.2 中,此包已升级到 2.2.8(nuget 上的最新版本)。在 .NET Core 3.1 中,不再发布此包。这导致对错误的 .NET Core dll 的依赖,导致旧的 dotnet.exe 被复制到输出文件夹。

我们尝试了两种解决方案(成功): 1. 我们移除了对 ChilkatDnCore 的依赖。 .NET Core 3.1 提供更多证书处理,因此不再需要依赖项。 2. 我们创建了一个不依赖 Microsoft.NETCore.App 的自定义版本的 nuget 包。显然 .NET Core 应用程序不需要它。