4

我目前正在将一个类库项目从 DNX (RC1) 迁移到 dotnet cli (RC2)。此前,该项目引用了 .NET v4.5.1 框架库,project.json文件如下所示:

  "frameworks": {
    "net451": {
      "frameworkAssemblies": {
        "System.Runtime": "4.0.10.0",
        "System.Web": "4.0.0.0",
        "System.DirectoryServices": "4.0.0.0",
        "System.DirectoryServices.AccountManagement": "4.0.0.0",
        "System.ServiceModel": "4.0.0.0",
        "System.ServiceModel.Security": "4.0.0.0"
      }
    }
  }

现在据我所知,(我可能错了)与 DNX 不同,新的 dotnet Cli 不支持 .NET 4.5.1,而是支持 .NET Standard。

所以问题是,.NET Standard 没有我想要的所有库。我必须更改什么才能引用 .NET 4.5.1 框架库?我阅读了有关导入声明的信息,但无法使其正常工作。这是我到目前为止(更新)的内容:

  "frameworks": {
    "net451": {
      "frameworkAssemblies": {
        "System.Runtime": "4.0.10.0",
        "System.Web": "4.0.0.0",
        "System.DirectoryServices": "4.0.0.0",
        "System.DirectoryServices.AccountManagement": "4.0.0.0",
        "System.ServiceModel": "4.0.0.0",
        "System.ServiceModel.Security": "4.0.0.0"
      }
    },
    "netstandard1.5": {
      "imports": [ "dnxcore50", "portable-net451+win8" ]
    }
  }

我收到如下错误:无法引用 ParallelQuery

我对我还需要做什么有点迷失......有什么想法吗?

4

3 回答 3

2

dotnet支持net451这是一个同时具有和的应用程序示例。net451netstandard

如果您的应用程序在 RC1 中的完整桌面上运行,则将其迁移到 RC2 中的完整桌面应该没有问题。

于 2016-05-19T00:30:25.447 回答
1

尝试使用netcoreapp1.0而不是 滚动netstandard1.5

新的RC2 模板生成以下project.json框架元素(默认情况下):

"frameworks": {
  "netcoreapp1.0": {
    "imports": [
      "dotnet5.6",
      "dnxcore50",
      "portable-net45+win8"
    ]
  }
},

在GitHub 上有一些关于这个的讨论。引用里奇兰德的话:

  • netstandard -> NETStandard.Library(这应该适用于所有 .NET
  • netstandardapp -> NETStandard.App(与 NETStandard.Library + 应用程序主机相同)
  • netcoreapp -> Microsoft.NETCore.App(这是 .NET Core 基础安装)
于 2016-05-19T16:50:17.960 回答
0

查看 GitHub 上的.NET Platform Standard 文档

目标名字对象以 .NET 4.6.2为netstandard1.5目标,这意味着您无法使用 .NET 4.5.1 项目运行它。

针对 .NET 4.5.1 及更高版本的正确名称是netstandard1.2.

本质上,目标名字对象告诉您哪个框架支持的最低。支持的框架越低,您可以使用单个名字对象定位的框架越多,而无需条件预处理器指令。

而且,目标名称越低,新功能就越少(即Task.CompletedTask)。

当您需要针对较旧的框架并希望使用新功能时,您必须使用多个目标,即netstandard1.2使用旧 api 并netstandard1.3使用 .NET 4.6+ Api 并使用条件预处理器指令在特定目标中使用新 Api 调用.

于 2016-05-19T07:10:20.180 回答