.NetCoreApp和.NetStandard.Library有什么区别?

时间:2016-07-03 09:09:44

标签: c# .net .net-core

.Net Core 1.0几天前已经发布,我已经开始玩了它。我创建了一个简单的解决方案,一个项目(类库=> .NetStandard.Library)和第二个,控制台应用程序(.NetCoreApp)。关键是,控制台应用程序引用了库,但我不能使用类型形式的库。这两个框架是不兼容的吗?我错过了什么吗?

用于控制台应用程序的project.json:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "ConsoleApplicationLibrary": "1.0.0-*",
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.0"
    }
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": "dnxcore50"
    }
  }
}

project.json for library:

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0"
  },

  "frameworks": {
    "netstandard1.6": {
      "imports": "dnxcore50"
    }
  }
}

我已经弄明白了,它有效,并且代码编译,但是Visual Studio仍然将库中的类型突出显示为未知。

4 个答案:

答案 0 :(得分:1)

最可能的问题是.Net Core期望ConsoleApplicationLibrary成为NuGet包。如果要引用项目,请使用"ConsoleApplicationLibrary": {"target": "project", "version": "1.0.0-*"}

执行此操作后,请不要忘记恢复包。

答案 1 :(得分:1)

好的,这很奇怪,但是在禁用resharper,重新启动VS并重建解决方案之后,它运行正常。似乎有针对.net核心的resharper支持的问题。 (resharper v.9.1.3)。从这个:resharper ultimate blog我明白,目前只有终极版本支持.net核心。

答案 2 :(得分:1)

.NetCoreApp 是一个平台, .NetStandard.Library 是一个应该是跨平台(可移植类库)的库,适用于各种.NET平台运行时。

您可以在任何支持的.NET平台项目中包含NetStandard.Library的直接引用(包),例如.NETCoreApp(Dot Net Core 1.X)

参考:https://docs.microsoft.com/en-us/dotnet/articles/standard/library

答案 3 :(得分:0)

我遇到了同样的问题,事实证明我需要将Resharper更新为最新版本。我有v9.1.1所以我把它更新到2016.3.2并解决了这个问题。