.net 4.7.2 библиотека, ссылающаяся на стандарт 2.0 NuGetPackage не работает
Мне нужно использовать пакет NuGet OPCFoundation.NetStandard.Opc.Ua в библиотеке классов.NET Framework 4.7.x.
До сих пор моей библиотекой классов была.NET Framework 4.7.0. Это работало хорошо, хотя пакет OPCFoundateion.NetStandard.Opc.Ua (.NET Standard 2.0) сгенерировал ОГРОМНУЮ кучу системных библиотек shim в папке bin. Совсем не хорошо, но это сработало.
Поскольку я нашел все эти десятки shim dll очень раздражающими, я провел некоторое исследование. В соответствии с различными статьями я узнал, что все эти библиотеки должны исчезнуть после обновления библиотеки классов до версии 4.7.2.
Ну, я так и сделал, но все стало только хуже.
Если вы попробуете это:
- Создать новое решение (VS2017, полностью обновлено)
- Создайте пустую библиотеку классов 4.7.2
- Импортируйте пакет OPCFoundation.NetStandard.Opc.Ua в библиотеку классов
происходит следующее:
Все еще системные shim-пакеты 83.* (и другие) загружаются, устанавливаются и сохраняются в папке Packages.
Появится 25 предупреждений: "Ссылочный компонент" System.xxxx.xxxx "не найден"
Если я игнорирую эти предупреждения и, тем не менее, пытаюсь использовать пакет, я получаю исключения времени выполнения, говорящие о том, что отсутствуют различные библиотеки DLL.
Что здесь происходит? Почему он не работает с 4.7.2, а с 4.7.0?
Я призываю вас попробовать это для себя, это очень, очень легко воспроизвести.
Я использую package.config для обработки NuGet, главным образом потому, что я не могу заставить наш сервер сборки TeamCity собрать проект, если я использую packageReferences.
1 ответ
.net 4.7.2 библиотека, ссылающаяся на стандарт 2.0 NuGetPackage не работает
Это известная проблема Проблемы со.NET Standard 2.0 с.NET Framework и NuGet, эти предупреждающие сообщения были добавлены из.net Framework 4.7.1
MS, чтобы напомнить пользователю, чтобы знать, что эта проблема существует. Вот почему он не работает с 4.7.2
пока он работает с 4.7
,
Но предупреждения безобидны и просто присутствуют в IDE, но могут раздражать.
Чтобы устранить эти предупреждения, вы можете удалить эти System.*
ссылки из вашего проекта, так как вы не можете использовать packageReferences
,
См. Добавление стандартных библиотек.NET в 4.7.1. Lib добавляет множество ссылок, некоторые из которых не работают для получения дополнительной информации:
Надеюсь это поможет.