Почему невозможно удалить System.Drawing и заменить на NuGet пакет System.Drawing.Common - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь удалить ссылку на каркас System.Drawing и использовать пакет NuGet System.Drawing.Common вместо

Однако, когда я удаляю System.Drawing, после установки System.Drawing.Common из пакета NuGetМенеджер, я вижу, System.Drawing вернулся в мои ссылки.

Я хочу удалить его и использовать только версию NuGet

Возможно ли это?

1 Ответ

0 голосов
/ 28 февраля 2019

Используя fuget для просмотра nuspec пакета , мы можем увидеть следующее:

<frameworkAssemblies>
  <frameworkAssembly assemblyName="mscorlib" targetFramework=".NETFramework4.6.1" />
  <frameworkAssembly assemblyName="System" targetFramework=".NETFramework4.6.1" />
  <frameworkAssembly assemblyName="System.Drawing" targetFramework=".NETFramework4.6.1" />
</frameworkAssemblies>

Итак, пакет сообщает NuGet, что System.Drawing необходим.

Если вы используете packages.config для импорта пакетов NuGet в свой проект, то по замыслу работает то, что NuGet скажет системе проекта Visual Studio добавить эти ссылки во время установки пакета.Следовательно, установка пакета добавит ссылку обратно.

Использование пакетов NuGet с PackageReference (требуется Visual Studio 2017, я не могу вспомнить, какая версия, возможно, 15.2 или выше, но, возможно, она работала в 15.0) не будетделать то же самое.С PackageReference только ссылка на пакет добавляется в ваш csproj, а затем транзитивные зависимости обрабатываются автоматически через систему сборки, без изменения вашего csproj.Однако не все типы проектов поддерживают PackageReference (и, как уже говорилось, VS2015 и более ранние версии также не поддерживают его).

...