2017-02-23 36 views
3

在VS2015>新项目> .Net核心,有一个“类库(.NET核心)”的模板为什么.NetCore类库引用.NetStandard?

直到我试图在.NET Core Web API程序中引用此库时,我意识到类库模板正在引用.NETStandard v1.6。而且我的.NET Core API项目不会将其作为参考。我试图避免将图书馆建设成nuget包。

关于为什么Core模板没有引用内核的任何想法? 关于快速解决方法的任何想法?

更新: 新开了一家 “类库(.NET核心)”,之前第一次构建我改框架中project.json到

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

然后我创建的,在VS情况不同,一个新的“ASP.NET核心Web应用程序(.NET Core)”。

我想引用在netcoreapp1.0文件夹添加到.dll文件为新的类库,现在我仍然得到同样的错误:

.NET Core Projects only support referencing .NET framework assemblies in this release.

+0

忘记一切有关,从头开始中Visual Studio 2017.不要浪费你宝贵的时间。 –

+1

@LexLi尽管知道底下发生了什么,但它仍然很好:) – 2017-02-24 07:04:20

+0

@goaty是的,特别是如果您打算编写一个旨在供不同框架使用的库,正如我在我的答案中所写的那样 –

回答

1

如何解决您的问题

I was trying to avoid building the library as a nuget package.

Any ideas on why a Core template isn't referencing core? Any ideas on quick workarounds?

当您尝试将.dll文件添加为API的参考,你的错误消息,应该说,你需要为了使用该类库来创建一个包的地方。它被描述为in the documentation

但是,如果你不想费心打个包,例如,如果你的类库只在您的API项目现在使用最简单的方法是建立你的类库为您的解决方案,其中API的项目住。为此,请将您的代码复制粘贴到Solution文件夹中,并将其作为项目包含在其中。

有关版本的一些解释和框架

核心模板(我想你所谈论的.NET核心API)应该创建

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

一个project.json让我们来看看线路负责:

  • netcoreapp1.0根据frameworks意味着您的API是针对fr .NET .NET Core 1.0。该版本的.NET Core框架实现了.NET Standard 1.6(the list here)好事:您的类库也使用此.NET Standard 1.6。了解您的类库所使用的.NET Standard 1.6使您能够选择当您稍后想要开发Web应用程序/移动应用程序/ Windows软件时可以使用的.NET Core/Xamarin/.NET Framework的版本,例如
  • imports列出了其他框架/包的版本,应用程序可以使用
  • 根据this linkdotnet5.6portable-net45+win8已过时和netstandard版本应改为使用。 dotnet5.6对我来说依然神秘。 portable-net45+win8相当于netstandard1.0。如果你愿意,这意味着你的应用程序可以使用.NET Standard 1.0使用包。这可能是一个问题,因为.NET Core 1.0从.NET Standard 1.6开始,所以我实际上会删除这两行。

这就是说,我很欢迎您的意见!

1

看起来其他答案(在此之前)没有达到要求。 .NET Standard是着写.NET类库的方式,因为它遵循了一套可以运行在几乎所有的.NET运行库标准API(完整的框架,.NET的核心,单Xamarin ...)

所以,如果你想要编写一个.NET core库,您正在有效地编写一个.NET Standard库。没有必要区分它们。对.NET standard 1.6的引用是让编译器知道要编译的内容。 netcoreapp1.0基本上为.NET core控制台应用程序。一个netcoreapp1.0项目将编译成可以执行的DLL(包含诸如static void Main()程序入口)

所以它是有道理的,为什么你不能在图书馆:)

+1

再次阅读我的答案。我没有说相反的事。我使用.NET Standard的库为.NET API提供了完整的解释;-) 但是,netcoreapp1.0不仅适用于.NET Core控制台应用程序。该框架使您能够在顶部运行MVC。 –

+0

我还是不明白,如果我的类库是一个.NET标准1.6为什么我不能加载它作为一个.NETCoreApp的引用? –

+0

@ Steve'Kepano'Eggering您的API可以使用您的类库。你有2种方式来做到这一点。第一种方法:使你的类库成为一个包并引用它。第二种方法:如果不想制作一个包,那么唯一的解决方案是将类库项目“包含”到您的API的Visual Studio解决方案中。我更新了我的答案。 –

相关问题