Я работаю над преобразованием некоторых библиотек классов из .NET 4.7.2 в .NET Standard (чтобы другие сборки Standard/Core могли их лучше использовать), и у меня возникла проблема с конкретной сторонней библиотекой. Эта библиотека выполняет обработку изображений, и многие из ее методов классов берут объекты Image
или Bitmap
из классического System.Drawing
имен System.Drawing
.
Я обнаружил стандартный пакет .NET System.Drawing.Common
котором есть классы совместимости, так что мое использование этих классов в моем исходном коде работает нормально. Но когда я пытаюсь передать один из этих классов в эту библиотеку, я получаю сообщение об ошибке:
Ссылка на тип "Bitmap" утверждает, что она определена в "System.Drawing", но не может быть найдена
Мне кажется, я понимаю, что здесь происходит (типы определены в сборках с разными именами, поэтому они являются разными типами). Но есть ли способ заставить их работать как есть? Или же он потребует от сторонней библиотеки внесения изменений для поддержки .NET Standard?
System.Drawing
не является частью .NET Standard, поэтому типы не совместимы.
Кроме того, я бы не стал использовать System.Drawing.Common
как это всего лишь оболочка вокруг GDI+, которая плохо работает в многопоточных средах, таких как код на стороне сервера.
Я бы порекомендовал перейти на ImageSharp или SkiaSharp, которые должны работать во всех ваших проектах.