Я пытаюсь написать несколько модульных тестов на С# в приложении .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), и любой другой трюк, который я нашел в Интернете, не работал (или вызывал больше ошибок).
Помощь?





вы можете попробовать использовать одну из описанных здесь библиотек вместо 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.