#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. Похоже, вы не проверили «автоматическое создание перенаправлений привязки» в свойствах вашего проекта.