NET Standard与Net Core App:创建.NET Core Project时(使用控制台或类库)

时间:2016-10-12 17:02:06

标签: .net .net-core console-application class-library .net-standard

我正在尝试将我的项目开发为跨平台。我以这种方式创建了几个类库:enter image description here

但是,当我使用Entity Framework来构建我的数据库时,除了在控制台应用程序中使用时,所需的nuget包没有安装。

不同之处在于,控制台应用程序引用了.NET Core:  enter image description here

Class库引用了.NET Standard:

enter image description here

那么为什么他们都在.NET Core下但引用了不同的库?它们都是跨平台还是仅使用.NET Core的控制台? 在这种情况下我应该避免使用类库吗?

1 个答案:

答案 0 :(得分:5)

"那么为什么他们都在.NET Core下但引用了不同的库?"
用于创建库的推荐NET版本现在为Net Standard Library。这就是为什么创建类库时的默认值是净标准版本而不是Net Core。您可以手动更改但不建议另请参阅此博客文章Introducing .NET Standard Library

它们都是跨平台还是只有使用.NET Core的控制台?
是的,它们都是跨平台的。

在这种情况下我应该避免使用类库吗?
不,无论何时都可以使用类库。这不是微软最初的意图,但他们后来改变了主意,所以并非所有软件包都与.net标准兼容,这就是为什么你不能使用net标准版本来建立一个脚手架项目因为" Microsoft.EntityFrameworkCore.Tools"目前只与Net core兼容,但很快就会与DotNet Standard兼容

正如我所说,如果你真的想保留脚手架选项,那么你可以使用类库项目并在project.json .net版本中手动更改,然后一旦兼容你可以切换回.net标准。您的其他项目(如服务或数据层)取决于您希望如何保持分离,可以是具有dotnet标准的类库,它们将能够正常工作。

或者您可以从原始解决方案中获得一个控制台应用程序(.net core)appart,并使用.net标准将其复制并粘贴到您的真实类库中。 (这是我们目前在项目中所做的事情)