求解,NETStandard 与NETCore 怎么选择!!

黑子大哥 2018-08-31 10:43:05
最近做项目的时候,心血来潮用上了高大上的.net core开发,但是遇到一个问题,也就是说Razor页面无法移动到别的类库
比如项目中,A.Web,a.Web.Mvc,a.Web.Page,web引用了mvc,page,web为主项目,

其中有一个模块为公共的页面模块,我想将页面内容放在page类库下,无奈没有找到支持方案

之后发现了一个项目叫Razor类库,只有在asp.net core 2.1下才能创建的库,其框架是.net Standard 2.0的,写好测试page之后感觉可以满足我当前将razor移动单独类库的需求,但是问题来了,net Standard的库无法引用netcore的库,提示不兼容,(意味着无法写页面的逻辑代码,因为逻辑代码库引用就说不兼容)经过多次尝试,netcore可以引用netstandard框架,所以必须将项目中所有类库创建时我都不能选择netcore了

所以我想问问,netstandard与netcore到底区别何在,网上说netstandard是标准,netcore是一种基于netstandard的实现,感觉还是有点懵逼

我可以这么理解吗?通俗点,netcore其实就是在netstandard上开放统一接口上的一种实现?

如果换成netstandard,对项目的性能各方面会有影响吗?

望各位大侠勿喷,还请赐教!!!
...全文
503 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
黑子大哥 2018-08-31
  • 打赏
  • 举报
回复
引用 1 楼 masanaka 的回复:
是的,你的类库要用.net standard.
.NET Standard 是一套 .NET API 规范,netcore不同版本对应实现了.NET Standard的不同版本。
参考https://docs.microsoft.com/zh-cn/dotnet/standard/net-standard
没有影响,本身就只是规范,最终是基于你用的实现版本(core or framework)执行的。

因为没有做过ui类库,所以其他的帮不了你,这好像是2.1刚出来的?
https://docs.microsoft.com/en-us/aspnet/core/razor-pages/ui-class?view=aspnetcore-2.1
网页最下面的feedback也有人问,Why is the Razor UI class library built as .NET Standard, whereas the web app is built as .NET Core?


谢谢你的回答,不过我尝试了新方案,项目也并非standard的才行,也可以建立一个.netcore类库项目
添加unget包 Microsoft.AspNetCore.Mvc 最新版
更改项目文件内容
<Project Sdk="Microsoft.NET.Sdk">

更改成
<Project Sdk="Microsoft.NET.Sdk.Razor">

这样编译发布的时候回将view进行编译

现在唯一的问题就是 这个UI库是基于Page方式写的,并非mvc的模式,还在熟悉中,
比如判断是否是ajax请求估计只能从提交头部信息中获取了。

masanaka 2018-08-31
  • 打赏
  • 举报
回复
是的,你的类库要用.net standard.
.NET Standard 是一套 .NET API 规范,netcore不同版本对应实现了.NET Standard的不同版本。
参考https://docs.microsoft.com/zh-cn/dotnet/standard/net-standard
没有影响,本身就只是规范,最终是基于你用的实现版本(core or framework)执行的。

因为没有做过ui类库,所以其他的帮不了你,这好像是2.1刚出来的?
https://docs.microsoft.com/en-us/aspnet/core/razor-pages/ui-class?view=aspnetcore-2.1
网页最下面的feedback也有人问,Why is the Razor UI class library built as .NET Standard, whereas the web app is built as .NET Core?
百里牛金 2018-08-31
  • 打赏
  • 举报
回复
netcore 就一脚手架
lindexi_gd 2018-08-31
  • 打赏
  • 举报
回复
不告诉你可以使用一个项目编译多个平台 [让一个 csproj 项目指定多个开发框架 - walterlv](https://walterlv.gitee.io/post/configure-projects-to-target-multiple-platforms.html )

具体请看 [.NET 三个字母究竟应该如何大小写?前面的 “.” 什么时候能够去掉?(.NET Standard / dotnet-core / net472) - walterlv](https://walterlv.gitee.io/post/case-of-dotnet-writing.html )
  • 打赏
  • 举报
回复
.NET Framework:用于构建桌面应用程序和运行在互联网信息服务器(IIS)上的ASP.NET应用程序,它只能运行在Windows环境中。

.NET Standard:实现了BCL(基类库,包含诸如异常处理、字符串、XML、I/O、网络和集合这样的类)的规范,每一种托管实现(如Xamarin、.NET Core或.NET Framework)都必须遵循.NET Standard实现的BCL,每个.NET版本都必须支持对应的.NET Standard版本,比如NFX 4.6.1对应.NET Standard 2.0。

.NET Core:是免费、跨平台的,是托管框架的开源实现,针对构建控制台、云、ASP.NET Core和UWP应用程序进行了优化,目前.NET Core并不支持windows组件,未来3.x版本会加入windows组件支持(但按RoadMap实现了也仅能运行在windows环境中)。

ASP.NET Core:基于.NET Core的应用实现,主要用于建置 Web 应用程序和服务、IoT 应用和移动后端应用程序。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧