Попытка перенести основные проекты. net с 2.2 на 3.1. - PullRequest
2 голосов
/ 20 января 2020

Попытка перенести проекты с. net core 2.2 на 3.1. В локальной отладке все приложение работает правильно. Я пытался опубликовать sh мое приложение на IIS. После публикации I go на URL сайта и появления ошибки:

Ошибка 500.31 - ANCM не удалось найти собственные зависимости в IIS

Распространенные решения этой проблемы: указанная версия Microsoft.NetCore.App или Microsoft.AspNetCore.App не найден.

Specifi c Ошибка, обнаруженная ANCM: обнаружена фатальная ошибка. Библиотека 'hostpolicy.dll', необходимая для запуска приложения, не найдена в

dotnet --info результат команды:

dotnet --info

Все проекты имеют целевую структуру .netcoreapp 3.1, библиотеки - .netstandart 2.0. Я попытался переустановить SDK, Visual Studio 2019. Я обновил все пакеты nuget с 2.2 до 3.1.1, которые связаны с Microsoft.

Также установлен пакет хостинга 3.1.1. Есть идеи, как решить эту проблему?

UPD. Команда publi sh:

dotnet publish $projectPath -m --no-build -c:$publishConfiguration -o $destinationPath -v q -r $targetPlatform /p:EnvironmentName=$publishEnvironment --self-contained false;

target-platform = win-x64. Модель хостинга: InProgress.

UPD 2. Результат dotnet list package при решении: https://gist.github.com/AndreiKhotko/60aafeb42566ac3e3fadfab2d0209dde

UPD 3. Сгенерированный отчет ASP.NET Core Diagnostics: https://gist.github.com/AndreiKhotko/2a193b4121c4399e0a00bfef708140da

UPD 4. Извините, я не указал полное сообщение об ошибке. Есть последняя часть (см. Выше для первой части):

Не удалось запустить как автономное приложение. Если это должно быть зависимое от фреймворка приложение, укажите соответствующий фреймворк в '* .runtime.config'.

Содержимое *.runtime.config:

{
  "runtimeOptions": {
    "tfm": "netcoreapp3.1",
    "includedFrameworks": [
      {
        "name": "Microsoft.NETCore.App",
        "version": "3.1.1"
      },
      {
        "name": "Microsoft.AspNetCore.App",
        "version": "3.1.1"
      }
    ],
    "configProperties": {
      "System.GC.Server": true
    }
  }
}

1 Ответ

1 голос
/ 23 января 2020

Причина в том, что dotnet publish ведет себя очень неоднозначно, когда обслуживается комбинация переключателей.

В вашем случае --self-contained false и -r linux-x64 в некотором роде конфликтуют друг с другом. -r linux-x64 заставляет генерировать автономные двоичные файлы, в то время как --self-contained false, кажется, удаляет важные зависимости времени выполнения из конечных файлов. Очень жаль, что do tnet CLI не выдает предупреждение / ошибку для этого.

Если ваша цель - использовать развертывание, зависящее от платформы, строго следуйте инструкциям, https://docs.microsoft.com/en-us/dotnet/core/deploying/deploy-with-cli#framework - зависимое развертывание и удалите -r linux-x64 из вашей команды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...