Что это за dotnet.exe в каталоге вывода моего опубликованного приложения после обновления с .net-core-2.2 до .net-core-3.1?

У нас есть веб-приложение .NET Core, использующее httpsys. Мы находимся в процессе обновления .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.

Я не могу найти никакой документации по этому изменению. Почему этот исполняемый файл находится в моем каталоге outputdir, почему это изменилось?


person Michiel Overeem    schedule 12.12.2019    source источник


Ответы (1)


Проблема, с которой мы столкнулись, вызвана пакетом nuget ChilkatDnCore. Он зависит от Microsoft.NETCore.App (> = 1.0.5). В .NET Core 2.2 этот пакет был обновлен до 2.2.8 (последняя версия на nuget). В .NET Core 3.1 этот пакет больше не публикуется. Это вызывало зависимость от неправильных dll .NET Core, в результате чего в выходную папку копировался старый файл dotnet.exe.

Мы попробовали два решения (успешно): 1. Мы удалили зависимость от ChilkatDnCore. .NET Core 3.1 предлагает больше возможностей для обработки сертификатов, поэтому зависимость больше не нужна. 2. мы создали специальную версию пакета nuget без зависимости от Microsoft.NETCore.App. Очевидно, это не нужно для приложений .NET Core.

person Michiel Overeem    schedule 27.12.2019