Как установить System.Drawing.Common в проекте, использующем .NETFramework,Version=v4.5.2?

Я пытаюсь написать несколько модульных тестов на С# в приложении .NETFramework, Version = v4.5.2, но все тесты дают следующую ошибку:

'System.IO.FileNotFoundException : Could not load file or assembly 'System.Drawing.Common, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.'

Когда я пытаюсь установить System.Drawing.Common, я получаю следующую ошибку от пакета NuGet:

Не удалось установить пакет «System.Drawing.Common 4.5.1». Вы пытаетесь установить этот пакет в проект, предназначенный '.NETFramework,Version=v4.5.2', но пакет не содержит ссылок на сборки или файлов содержимого, совместимых с этой платформой. Для большего информацию, свяжитесь с автором пакета.

Я не могу изменить версию приложения или фреймворк (.NET Core 2.1), и любой другой трюк, который я нашел в Интернете, не работал (или вызывал больше ошибок).

Помощь?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
5
27 161
5

Ответы 5

вы можете попробовать использовать одну из описанных здесь библиотек вместо https://devblogs.microsoft.com/dotnet/net-core-image-processing/

вы также можете попробовать использовать https://www.nuget.org/packages/CoreCompat.System.Drawing/ и, возможно, попытаться изменить структуру своего приложения на стандарт .net 2.0?

в NuGet поместите эту строку: Install-Package System.Drawing.Common — версия 4.5.2

в .NET CLI поместите: dotnet добавить пакет System.Drawing.Common --версия 4.5.2

в пакете CLI поместите: пакет добавления System.Drawing.Common --version 4.5.2

Была такая же проблема. Я клонировал решение https://github.com/barnhill/barcodelib. У него есть два проекта: проект библиотеки предназначен для .Net Standard 2.0 и относится к System.Drawings.Common. Пример проекта зависит от библиотеки и имеет ссылку на System.Drawings.Common. Пример проекта не компилировался из-за той же ошибки.

Мое решение состояло в том, чтобы просто удалить ссылку на System.Drawings.Common в пакетах nuget и прочитать ее (щелкните Пример проекта > Управление пакетами nuget > Обзор установленных, удалите пакет System.Drawings.Common, а затем добавьте его обратно), выгрузите проект а потом снова перезагрузить

Мне помогло.

Это немного странно, но это сработало очень хорошо, поэтому я упомяну об этом. Я создал небольшой консольный проект 2017 года, который должен был читать базу данных оракула. Когда я начал запускать его, я получил упомянутую выше ошибку System.Drawing.Common. Это казалось глупым, потому что я вообще не занимался рисованием. В разделе «Управление пакетами Nuget» я удалил драйвер Oracle.ManagedDataAccess и добавил Oracle.ManagedDataAccess.Core, и ошибка System.Drawing.Common исчезла, и я смог прочитать свою базу данных оракула. Поэтому я предполагаю, что с NuGet вы можете получить некоторые вещи, которые вам действительно не нужны, и если у вас есть выбор для ваших пакетов NuGet, попробуйте другие. Это также может быть связано с тем, как моя организация управляла nuget для предприятия Visual Studio 2017.

I managed to solve it by restarting Visual Studio, changing the framework to 4.6.1 (which I could not do before) and adding the reference.

OP's solution migrated from the question to an answer.

Другие вопросы по теме