关于c#:如何在.NET Core项目中引用.NET Framework项目?

How do I reference a .NET Framework project in a .NET Core project?

我真的很想开始使用.NET核心并慢慢地将应用程序和库迁移到它。但是,我不能真正地将整个代码库升级为使用.NET核心,然后在生产中测试和部署大量应用程序。

例如,如果我创建一个新的.NET核心应用程序并尝试引用我的一个.NET框架项目,我会得到以下信息:

0

是否可以创建新的.NET核心应用程序并引用现有的.NET框架库?如果是这样,那么做的过程是什么?我花了好几个小时浏览微软的文档并在Github上搜索他们的问题,但我找不到任何官方的关于如何实现这一目标或他们对这一过程的长期愿景。


是的,我们目前正在尝试同样的事情。诀窍是确保您支持相同的.NET框架。在project.json文件中,确保框架与要包含的项目框架相匹配。例如:

1
2
3
4
5
6
7
8
9
10
11
12
"frameworks": {
   "net46": {  --This line here <<<<
     "dependencies": {
       "DomainModel": {
         "target":"project"
        },
       "Models": {
         "target":"project"
        }
      }
    }
  },

仅供参考:您可能需要更改.NET核心或旧项目的框架来实现这一点。可以通过编辑上面所示的project.json文件来更改.NET核心。在.NET项目中也可以这样做,方法是右键单击该项目并打开属性。在那里更改框架级别。

一旦您匹配了两个项目框架,那么您应该能够包含它们。祝你好运!


老问题,但是随着.netstandard 2.0和.netcore 2.0和vs2017.3的发布,游戏已经改变了。

您可以将完整的.NET框架(tfm)与.netcore 2.0一起使用,但如何使用呢?

  • 在Visual Studio 2017.3中,可以直接从.netcore2项目中引用完整的.NET框架(任何版本)。

  • 您可以构建.netstandard2类库并引用您的TFM。然后从.netcore2项目中引用.netstandard2库。

  • 例如,从.netstandard2引用json.net net45。浏览到文件夹并选择版本net45(不是netstandard1.3)

    请参见下图中的依赖项,如您所见,没有黄色警告。

    enter image description here

  • 即使nuget库尚未准备好移植到.netstandard 2,也可以使用库中符合net461的任何API。
  • 引用带有链接的.NET Core 2/Standard 2.0发布:

    0

    参考:Linux上的.NET核心应用程序目标.NET Framework 4.5.2

    A need to use third-party .NET libraries or NuGet packages not available for .NET Core

    So only in cases where the libraries or NuGet packages use technologies that aren't available in .NET Standard/.NET Core, you need to use the .NET Framework.

    参考:在.NET核心和.NET框架之间选择服务器应用程序

    You can now reference .NET Framework libraries from .NET Standard libraries using Visual Studio 2017 15.3. This feature helps you migrate .NET Framework code to .NET Standard or .NET Core over time (start with binaries and then move to source). It is also useful in the case that the source code is no longer accessible or is lost for a .NET Framework library, enabling it to be still be used in new scenarios.

    参考:宣布.NET核心2.0