I am trying to develop my projects to be cross platform. I have created several class libraries in this way:![enter image description here](https://i.stack.imgur.com/1tYnQ.png)
但是,当我使用实体框架构建数据库时,所需的 nuget 包不会安装,除非在控制台应用程序中使用。
Here is the difference, the console app references the .NET Core:
![enter image description here](https://i.stack.imgur.com/niP6p.png)
类库引用了 NET 标准:
![enter image description here](https://i.stack.imgur.com/MaqIu.png)
那么为什么它们都在 .NET Core 下但引用不同的库呢?它们都是跨平台还是只有使用 .NET Core 的控制台?
在这种情况下我应该避免使用类库吗?
“那么为什么它们都在 .NET Core 下但引用不同的库呢?”
现在推荐为其创建库的 NET 版本是网络标准库。这就是为什么创建类库时默认是net标准版本而不是Net Core。您可以手动更改它,但不建议另请参阅此博客文章.NET 标准库简介.
它们都是跨平台还是只有使用 .NET Core 的控制台?
是的,它们都是跨平台的。
在这种情况下我应该避免使用类库吗?
不,无论如何,每次都可以使用类库。这并不是微软一开始的初衷,但后来他们改变了主意,所以并不是所有的包都与 .net 标准兼容,这就是为什么你不能使用 .net 标准版本来拥有一个脚手架项目,因为“Microsoft. EntityFrameworkCore.Tools”目前仅与 Net core 兼容,但可能很快就会与 DotNet Standard 兼容
正如我所说,如果您确实想保留脚手架选项,那么您可以使用类库项目并在 project.json 中手动更改 .net 版本,然后一旦兼容,您就可以切换回 .net 标准。您的其他项目(例如服务或数据层,具体取决于您希望如何保持分离)可以是具有 dotnet 标准的类库,并且它们将能够正常工作。
或者,您可以从原始解决方案中创建一个控制台应用程序(.net core),并使用 .net 标准复制并粘贴到您的真实类库中。 (这是我们目前项目中正在做的事情)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)