如何在使用'.NETFramework,Version = v4.5.2'的项目中安装System.Drawing.Common?

时间:2019-03-04 13:20:07

标签: c# .net visual-studio installer core

我正在尝试在'.NETFramework,Version = v4.5.2'应用程序中用C#编写一些单元测试,但是所有测试都会给出下一个错误:

  

'System.IO.FileNotFoundException:无法加载文件或程序集   'System.Drawing.Common,版本= 0.0.0.0,文化=中性,   PublicKeyToken = cc7b13ffcd2ddd51'。系统找不到文件   指定。”

当我尝试安装System.Drawing.Common时,我从NuGet软件包中收到下一个错误:

无法安装软件包“ System.Drawing.Common 4.5.1”。您正在尝试将此软件包安装到针对的项目中 '.NETFramework,Version = v4.5.2',但该软件包不包含任何与该框架兼容的程序集引用或内容文件。欲了解更多 信息,请与软件包作者联系。

我无法更改应用程序版本或框架(.NET Core 2.1),并且我在网上发现的任何其他窍门均无效(或产生了更多错误)。

帮助?

更新:我设法通过重新启动Visual Studio,将框架更改为4.6.1(以前无法做到)并添加引用来解决此问题。很抱歉,不清楚的解释,我是新手,对我来说Visual Studio的工作方式很神秘。谢谢大家

4 个答案:

答案 0 :(得分:2)

有同样的问题。我已经克隆了解决方案https://github.com/barnhill/barcodelib。它有两个项目:库项目目标为.Net Standard 2.0,并引用System.Drawings.Common。示例项目取决于库,并且引用了System.Drawings.Common。由于相同的错误,示例项目无法编译。

我的解决方案是删除对nuget包中System.Drawings.Common的引用并读取它(单击“示例项目”>“管理nuget包”>“浏览已安装”,删除System.Drawings.Common包,然后将其重新添加) ,卸载项目,然后再次重新加载

对我有帮助。

答案 1 :(得分:0)

您可以尝试使用此处描述的一种库代替https://devblogs.microsoft.com/dotnet/net-core-image-processing/

您还可以尝试使用https://www.nuget.org/packages/CoreCompat.System.Drawing/并尝试将您的应用程序框架更改为.net standard 2.0?

答案 2 :(得分:0)

在NuGet中输入以下行:     安装包System.Drawing.Common-版本4.5.2

在.NET CLI中,

放在:     dotnet添加软件包System.Drawing.Common --version 4.5.2

在Paket CLI中,

放在:     paket添加System.Drawing.Common --version 4.5.2

答案 3 :(得分:0)

这有点奇怪,但是效果很好,所以我要提一下。我建立了一个小型vs 2017耳鼻喉控制台项目,该项目应该读取一个Oracle数据库。当我开始运行它时,出现了上面提到的System.Drawing.Common错误。这看起来很愚蠢,因为我根本没有做任何与Drawing相关的事情。在“管理Nuget程序包”中,我删除了Oracle.ManagedDataAccess驱动程序,并添加了Oracle.ManagedDataAccess.Core和System.Drawing.Common错误,并且我能够读取我的oracle数据库。因此,我建议您使用NuGet可能会捡拾一些您真正不需要的东西,并且如果您有任何选择可以使用NuGet软件包,请尝试其他软件包。对于我的组织如何为Visual Studio 2017企业管理nuget,这可能还有些怀疑。