#c# #asp.net-core-mvc #nuget
#c# #asp.net-core-mvc #nuget
Вопрос:
Я установил NuGet-пакет, необходимый для запуска som-кода для создания QR-кодов. Пакет конфликтует с system.drawing.common
Ошибка CS0433 Тип ‘PixelFormat’ существует в обоих ‘CoreCompat.Система.Чертеж, версия = 1.0.0.0, язык = нейтральный, PublicKeyToken=c0a7ed9c23333b592’ и ‘System.Рисование.Распространенный, версия = 4.0.0.1, Культура = нейтральная, PublicKeyToken = cc7b13ffcd2ddd51’
Я пытаюсь решить это следующим образом:
using PixelFormat = CoreCompat.System.Drawing;
Несмотря на то, что это выдает ошибку:
Ошибка CS0246 Не удалось найти тип или имя пространства имен ‘CoreCompat’ (вам не хватает директивы using или ссылки на сборку?)
Очевидно, Visual Studio каким-то образом знает, что оно там есть, поскольку в противном случае конфликта не было бы.
Я попытался переустановить все связанные NuGet-пакеты.
Как бы мне решить эту проблему?
Комментарии:
1.
CoreCompat.System.Drawing
это сборка, а не пространство имен. Вы должны удалить его.
Ответ №1:
CoreCompat — это старая библиотека, созданная для предоставления System.Drawing
совместимого API, который работал бы в Core, поскольку изначально System.Drawing
не поддерживался. С тех пор Microsoft выпустила System.Drawing.Common
собственный, совместимый с ядром System.Drawing
API для замены. Каким-то образом у вас есть ссылки на оба в вашем проекте.
Если ваша библиотека QR-кодов использует CoreCompat
, вам действительно следует сообщить о проблеме с этим проектом, чтобы попросить их обновить зависимость до System.Drawing.Common
. Или вы можете внести изменения самостоятельно и отправить запрос на извлечение. В противном случае или до тех пор, пока это не будет исправлено, вам может потребоваться найти другую библиотеку для использования.
Возможно, зависимость также исходит откуда-то еще. Проверьте свои собственные проекты, чтобы убедиться, что вы этого не вносите. В конечном счете, вам просто нужно провести небольшое исследование здесь и посмотреть, откуда CoreCompat
берется, и избавиться от этого.