【问题标题】:How do I install System.Drawing.Common in a project that uses '.NETFramework,Version=v4.5.2'?如何在使用“.NETFramework,Version=v4.5.2”的项目中安装 System.Drawing.Common?
【发布时间】:2019-03-04 13:20:07
【问题描述】:

我正在尝试在“.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),并且我在网上找到的任何其他技巧都不起作用(或产生了更多错误)。

帮助?

【问题讨论】:

  • 您使用的是 4.5.x 还是 Core 2.x ?我很困惑。
  • 如果我已经磨损,请纠正我,但在我看来,您正在尝试将 nuget 包 System.Drawing.Common 添加到 .net 4.5 应用程序中。在 .net 4.5 中,system.drawing 是一个集成部分,您只需将其添加为组件(参考管理器)下的参考
  • 我有一个包含多个项目的解决方案。我使用的项目具有目标框架 Core 2.x。错误提到.net 4.5.2。
  • 我正在尝试添加对包 Drawing.Common 的引用。我的电脑里有一个 dll,但应用程序不接受它,所以我尝试再次安装它并得到其他错误

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


【解决方案1】:

在 NuGet 中输入这一行: 安装包 System.Drawing.Common -Version 4.5.2

在 .NET CLI 中: dotnet 添加包 System.Drawing.Common --version 4.5.2

在 Paket CLI 中输入: paket add System.Drawing.Common --version 4.5.2

【讨论】:

  • 那是我得到第二个错误的地方。我什至没有在 Manage nuget ... 中找到 System.Drawing 解决方案
  • 添加:System.Drawing.Bitmap System.Drawing.BitmapData System.Drawing.Brush System.Drawing.Font System.Drawing.Graphics System.Drawing.Icon
【解决方案2】:

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

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

帮了我。

【讨论】:

    【解决方案3】:

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

    您也可以尝试使用https://www.nuget.org/packages/CoreCompat.System.Drawing/,或者尝试将您的应用框架更改为 .net 标准 2.0?

    【讨论】:

    • 我尝试直接安装它并将其添加到项目中,但它不会看到我的dll。我仅将 System.Drawing 用于一行(我需要从报告设计中获取数据集进行比较),我无法为我的测试项目修改整个解决方案
    • 你说你想写一些单元测试,上次我看到一个问题,有人无法添加对 MS Test 项目的引用,所以他不得不重新构建整个解决方案并关闭再打开整个 Visual Studio ......但我猜你的问题与你的框架版本有关。您是否尝试通过 nuget 将引用添加到您的所有解决方案或仅您的 .net core 2.1 项目?您可以尝试更新 .net 框架版本以兼容 .net 标准 2.0 docs.microsoft.com/pl-pl/dotnet/standard/net-standard
    【解决方案4】:

    这有点奇怪,但效果显着,所以我要提一下。我构建了一个小型 vs 2017 ent 控制台项目,该项目应该读取一个 oracle 数据库。当我开始运行它时,我得到了上面提到的 System.Drawing.Common 错误。这似乎很愚蠢,因为我并没有真正做任何与绘图有关的事情。在 Manage Nuget Packages 中,我删除了 Oracle.ManagedDataAccess 驱动程序并添加了 Oracle.ManagedDataAccess.Core 并且 System.Drawing.Common 错误消失了,我能够读取我的 oracle 数据库。因此,我建议使用 NuGet,您可能会获得一些您真正不需要的东西,如果您对 NuGet 包有任何选择,请尝试不同的包。这也可能与我的组织为 Visual Studio 2017 企业管理 nuget 的方式有些问题。

    【讨论】:

      【解决方案5】:

      我设法通过重新启动 Visual Studio、将框架更改为 4.6.1(我以前无法做到)并添加参考来解决它。

      OP 的解决方案从问题迁移到了答案。

      【讨论】:

        猜你喜欢
        • 2016-04-05
        • 2019-02-15
        • 2022-01-15
        • 1970-01-01
        • 2020-12-20
        • 1970-01-01
        • 2017-06-21
        • 2016-07-11
        • 2019-10-18
        相关资源
        最近更新 更多