Я разработал библиотеку C # Framework, которая предназначена как для .NetStandard, так и .NetFramework. Это было сделано путем редактирования файла .csproj, изменения TargetFramework на TargetFramework s и добавления их обоих в тег:
<TargetFrameworks>netstandard2.0;net471</TargetFrameworks>
Теперь я могу добавить этот фреймворк как ProjectReference в другие мои проекты.
Это прекрасно работает для всех проектов, имеющих файл .csproj.
Однако при добавлении фреймворка в проект веб-сайта asp (у которого нет файла .csproj) я получаю очень странные ошибки сборки.
Could not get dependencies for project reference 'XX.Framework' wwwroot
The type 'System.Enum' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.
Моя TargetFramework для веб-сайта - 4.7.1, как видно из моего web.config:
<compilation debug="true" targetFramework="4.7.1">
Я вижу из размера файла импортируемого .dll, что он получает dll для .NetStandard, а не .NetFramework. Правильно, почему я получаю ошибки сборки.
Обратите внимание, что при добавлении фреймворка через nuget вместо ссылки на проект он получает правильную dll, то есть dll .NetFramework. И поэтому нет ошибок сборки.
У меня такой вопрос:
Почему веб-сайты asp.net игнорируют мою targetFramework в web.config при добавлении многоцелевых фреймворков по ссылке на проект?
Редактировать 1 :
Структура моего сайта:
Редактировать 2 :
Решение VS с примером проблемы.
https://github.com/srenrd/MultiFrameworkExample