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

时间:2019-12-12 19:38:18

标签: .net-core .net-core-3.0 .net-core-3.1

我们有一个使用httpsys的.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的日期为2016年6月15日,并且版本号为1.0.1.4500。

我找不到有关此更改的任何文档。为什么我的outputdir中有此可执行文件,为什么要更改?

1 个答案:

答案 0 :(得分:0)

我们遇到的问题是由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.我们创建了自定义版本的nuget软件包,而没有依赖于Microsoft.NETCore.App。显然,.NET Core应用程序不需要它。