【问题标题】:Core 2 error referencing Framework libraries核心 2 错误引用框架库
【发布时间】:2023-03-16 23:41:02
【问题描述】:

我有一个测试项目 int Core 2 控制台 (Core2ConsoleTest)。

它引用了 .NET Framework 4.6.1 项目 (NetFrameworkTest)。

NetFrameworkTest 项目引用标准 System.Printer.dll。

Download Core2ConsoleTest project here

当我调用任何 System.Printer 函数时出现错误:无法加载文件或程序集“System.Printing,版本=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”。 El sistema no puede encontrar el archivo especificado。

我使用 System.Windows.Forms.dll 等其他标准库进行了测试,如果 Core 项目引用了使用标准库的 Nuget 包,则会出现同样的错误。

注意:与 ASP.Net Core 2 相同的错误

感谢您的帮助!

【问题讨论】:

    标签: asp.net-core-2.0 .net-core-2.0


    【解决方案1】:

    这不适用于 .NET Core。

    .NET Core 2.0 有一个兼容层,允许加载和使用 .NET Framework 库,但这仅适用于该库仅使用 .NET Core 上也可用的类型和方法。

    由于System.Printing 不是 .NET Core 的一部分,因此该库将无法访问它,除非您发布了异常。

    只有 .NET Framework 应用程序可以使用此 API(例如 .NET Framework 应用程序上的 ASP.NET Core)。

    【讨论】:

    • 在 Core 1.1 中是允许的。我有一个使用这种架构的项目,它可以工作。您知道这是否是一个将在未来版本中删除/解决的限制吗?在我看来,这种限制会造成严重的兼容性问题。
    • System.Printing 是 .NET Framework 中 Windows API 的包装器。将其移植到 .NET Core 意味着实现一个可以在 windows、linux 和 macOS 上使用各种打印系统的版本,我在任何路线图上都没有看到。
    • 感谢@Martin 的回复,但我说的是 Windows 上安装了适当的 .Net Framework 的 Core Framework,它不需要 Linux 或 Mac,最重要的是删除已实现的功能核心 1.1。我在生产中有一个 ASP.Net Core Framework 应用程序。我拿她怎么办? 1drv.ms/u/s!ArCJF44YRdJrlIVAsYzYJQX_MJgyLAdocs.microsoft.com/en-us/dotnet/core/…上的相关对话
    • 你说的是.net core还是asp.net core?这些是独立的组件。
    • 我在两者中都进行了测试,结果相同,但我需要在“ASP.Net Core”上
    【解决方案2】:

    我确实对 ASP.Net Core Framework 项目有疑问。我无法使用 Core 2.0 创建新项目并引用引用 System.Printing.dll 或其他库的框架库。

    但是@mairaw 给了我另一种方法:在一个在 Core 1.1 中运行的项目中,将 Nuget 库更新到 2.0,可以正常工作。

    所以它看起来像是 Visual Studio 2017 的问题或核心模板。

    我担心的是要删除此功能,因为它允许以交错的方式采用 Core 技术,并且代码重用率很高。

    编辑:添加示例项目

    1. CoreTest.zip -> 过去创建了一个引用 Core 1.1 和 .NET Framework 4.6.1 的 ASP.Net Core Framework 项目,然后使用 Nuget 升级到 Core 2.0:WORKS!

    2. Core2Framework.zip -> 使用 Visual Studio 2017 15.3.4 创建的类似项目(ASP.Net Core Framework Project 创建引用 Core 2.0):从 .NET Framework 4.6 调用 System.Prinig.dll 时出错。 1 个项目。

    【讨论】:

    • 这与您提供的示例不同(它针对 netcoreapp2.0,因此不是 .net 框架应用程序上的 asp.net 核心)。你能为你的问题提供一个类似的回购吗?
    • 我编辑了我的答案以包含两个简单的项目。当然,使用 Core 控制台应用程序是不可行的(或不可行),但在 ASP.Net Core Framework 中,它适用于从 1.1 升级的 Core 1.1 和 Core 2.0,但在 Core 2.0 中创建的新项目则不行
    猜你喜欢
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 2010-10-24
    相关资源
    最近更新 更多