是否可以使用.NET Framework与.NET Framework

Mid*_*aze 2 c# project.json asp.net-core

我一直在试图创建一个完全是.NET Core的新项目,这个项目可以在不同的环境中运行,但我需要添加许多以前在严格的.NET Framework中工作的项目作为参考(4.5 ).

到目前为止,我能够做的是将.NET 461框架添加到项目json中,

"frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ],
      "dependencies": {
        "Microsoft.NETCore.App": {
          "version": "1.0.1",
          "type": "platform"
        },
        "Niloosoft.Hunter.ServicesDataAPI": {
          "target": "project"
        }
      }
    },
    "net461": { }
  }
Run Code Online (Sandbox Code Playgroud)

它成功恢复了包,我甚至设法添加了.NET框架引用,但我似乎无法正确使用它们而且我得到了这个错误.在此输入图像描述

所以,我的问题是,目前是否可以使用我的.NET Framework参考,而无需将预期的框架(因为我需要互操作性)与以下内容交换:

    > #if NET45 
//specific code for .NET 4.5
    > #
Run Code Online (Sandbox Code Playgroud)

需要注意的是,.NETCoreApp不支持我的项目,因此,我确实需要.NET Framework,我只是需要知道我正在尝试做的是否可行.

Tse*_*eng 5

不,您不能仅在.NET Core中运行以.NET 4.5为目标的库.您只能使用该目标库netstandard1.xnetcoreapp1.x(以及旧的图书馆,其目标dnxcore5.0,dotnet5.x(这是赞成不赞成netstandard1.x,并有利于DOTNET CLI的DNX被抛弃).

但是,您可以使用面向.NET 4.5 Windows Phone 8.x或Windows 8.x的PCL ,因为它们的API表面要小得多,并且只有适用于Windows 8.x/Windows Phone 8.x的API.在.NET 4.5+上(这意味着:它使用System.Runtime,.NET Core所基于的).

如果您的库不是使用.NET 4.5 + Win8或更高版本的PCL,那么您将不得不寻找替换库并使用#if指令或net451/net461仅针对目标并运行单声道,然后运行.NET Core.