Могут ли стандартные библиотеки .NET каким-то образом потреблять пакеты nuget, которые поддерживают .NET Framework 4.6.1? - PullRequest
0 голосов
/ 05 декабря 2018

Я конвертирую библиотеку на C # net461 в netstandard2.Некоторые из зависимостей библиотеки поддерживают не более net461.Visual Studio отображает следующее предупреждение для этих зависимостей:

Предупреждение Пакет NU1701 'IKVM v8.1.5717' был восстановлен с использованием .NETFramework, Version = v4.6.1 'вместо целевой структуры проекта' .NETStandard, Version = v2.0.Этот пакет может быть не полностью совместим с вашим проектом.

Есть ли способ включить эти зависимости и успешно портировать на netstandard2?

Я посмотрел вокруг и попробовал Microsoft.Windows.Compatibility nuget.После добавления его в качестве дополнительной зависимости к новому проекту библиотеки netstandard2 предупреждения все еще присутствуют, и выходные данные сборки в bin / debug / netstadard2 не содержат dll зависимостей nuget.Как и ожидалось, при попытке использовать библиотеку из другого проекта я получаю исключения времени выполнения для отсутствующих библиотек зависимостей net461 библиотеки netstandard2.

1 Ответ

0 голосов
/ 07 декабря 2018

После многих экспериментов и поисков я обнаружил, что проблема двоякая:

  1. У зависимостей net461 были API, не охватываемые netstandard 2.0, что вызывало ошибки во время выполнения.
  2. Будучи транзитивными зависимостями, библиотеки DLL с зависимостями net461 не были включены во время сборки.

В моем случае проблема № 1 была решена путем включения пакета совместимости Windows, который включает в себя дополнительные API-интерфейсы myИспользуются зависимости net461.Но из-за проблемы №2 я все еще получал исключения во время выполнения.

Проблема №2 была решена путем обеспечения того, чтобы во всех импортах использовался стиль PackageReference, который использует транзитивные зависимости.

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