如何获得对 class 库项目的引用?

How do I get a reference to a class library project to work?

使用以下 2 个文件:

C# Class 库项目目标框架:.NET v 5.0

using System;

namespace ClassLibrary1
{
    public class MyExternalClass { }
}

C# 控制台项目 .NET Framework:4.8

using System;
using ClassLibrary1;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            MyExternalClass myObj = new MyExternalClass();
            Console.WriteLine(myObj.ToString());
            Console.ReadKey();
        }
    }
}

我在 运行 程序时出现以下错误 System.IO.FileNotFoundException: '无法加载文件或程序集 'System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。系统找不到指定的文件。'

复制的详细信息: System.IO.FileNotFoundException HResult=0x80070002 Message=无法加载文件或程序集 'System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。该系统找不到指定的文件。 来源= 堆栈跟踪:

我已经像往常一样添加了库的引用,并且没有使用任何来自 NuGet 的附加包。这是我能得到的极简主义。 除了 .NET Standard 2.0

之外,这对每个 .NET 目标框架都适用

我已经阅读了一些涉及手动编辑 visual studio 文件的可能的修复程序,但 none 到目前为止对我有用,当然它们已经有好几年了并且涉及其他版本和框架。

错误可能是由于版本不匹配或创建项目后更改。

针对 4.8 版本重新创建两个项目,应该可以解决问题。

为了能够从 .NET Framework 项目引用库,库需要以 .NET Framework 或 .NET Standard 为目标。

.NET 5 和 .NET Framework 是不同的野兽。

.NET Standard 文章是查看此内容的好地方:。您可以看到 .NET 和 .NET Framework 在显示 .NET 版本的 table 中是单独的行。

.NET 标准 2.0

为什么“除了 .NET Standard 2.0 之外的每个 .NET 目标框架都存在这种情况”的答案可以在同一篇文章中找到:

To find the highest version of .NET Standard that you can target, do the following steps:

  • (...)
  • Repeat this process for each platform you want to target. If you have more than one target platform, you should pick the smaller version among them. For example, if you want to run on .NET Framework 4.8 and .NET 5.0, the highest .NET Standard version you can use is .NET Standard 2.0.

4.8 和 5.0。令人困惑。

是的,这可能会造成混淆

自 2019 年 5 月起在 Introducing .NET 5 中,.NET 团队的项目经理 Richard Lander 写道:

.NET 5 = .NET Core vNext

.NET 5 is the next step forward with .NET Core. (...) The project aims to improve .NET in a few key ways:

  • Produce a single .NET runtime and framework that can be used everywhere and that has uniform runtime behaviors and developer experiences.
  • Expand the capabilities of .NET by taking the best of .NET Core, .NET Framework, Xamarin and Mono.
  • (...)

后来他写道:

We’re skipping the version 4 because it would confuse users that are familiar with the .NET Framework, which has been using the 4.x series for a long time. Additionally, we wanted to clearly communicate that .NET 5 is the future for the .NET platform.

最后:

Check out .NET Core is the Future of .NET to understand how .NET 5 relates to .NET Framework.