Установка targetFramework=net472 По-прежнему выдает ошибку «Не удалось загрузить файл или сборку»netstandard, версия=2.1.0.0»

#c# #asp.net #csproj #multitargeting #.net-standard-2.1

Вопрос:

У меня есть мультипроектное решение, которое включает в себя ASP.NET Проект веб-API и все проекты изначально были встроены в >NET Framework 4.7.2. Один из проектов библиотеки классов в решении, который я изменил на многоцелевой:

 <TargetFrameworks>net472;netstandard2.1</TargetFrameworks>
 

Я проработал все (указав различные пакеты nuget для целевых фреймворков и инструкции #if NET472_OR_GREATER по всему коду) и смог заставить его собраться. С инструкциями if и целевыми пакетами nuget проект для net472 точно такой же (различия только для netstandard), как и до многоцелевого.

Я изменил ссылки на проекты в файле .csproj для всех других проектов, которые ссылаются на этот проект, следующим образом:

   <ProjectReference Include="..MyProjectMyProject.csproj">
      <SetTargetFramework>TargetFramework=net472</SetTargetFramework>
      <SkipGetTargetFrameworkProperties>true</SkipGetTargetFrameworkProperties>
  </ProjectReference>
 

Тем не менее, когда я запускаю проект Web API (который успешно строится), я получаю ошибку:

Не удалось загрузить файл или сборку «netstandard, Версия=2.1.0.0, Культура=нейтральная, PublicKeyToken=cc7b13ffcd2ddd51» или одну из ее зависимостей. Система не может найти указанный файл.

Что я делаю не так? Проект веб-API не должен нуждаться в .NET Standard 2.1, верно?

Комментарии:

1. Сборка и время выполнения — 2 разные вещи. Вам может потребоваться дополнительная конфигурация, перенаправление ссылок на сборку для среды выполнения. Это также может быть проблемой с пулом приложений.. В принципе, это ошибка во время выполнения, и проблема связана с потоком, который ее запускает.

2. Похоже, вы не проверили «автоматическое создание перенаправлений привязки» в свойствах вашего проекта.