北京的制作网站的公司在哪里,淘宝网站那个做的,网站关键词优化步骤,php网站后台开发教程继上次”vNext之旅#xff08;1#xff09;#xff1a;从概念和基础开始”之后再次学习vNext重新遇到了弄不懂的事情#xff0c;花了一些时间学习#xff0c;今天来分享一下#xff0c;为后人节省些时间。起因 在用vNext造轮子——框架的时候引入“Microsoft.Dnx.Runtime… 继上次”vNext之旅1从概念和基础开始”之后再次学习vNext重新遇到了弄不懂的事情花了一些时间学习今天来分享一下为后人节省些时间。 起因 在用vNext造轮子——框架的时候引入“Microsoft.Dnx.Runtime”包错误。错误如下 当时就很郁闷我明明用的是最新的版本“1.0.0-rc-final”啊为什么会报错微软改名之后没有及时更新包吗 下面我打开了这个包在NuGet的地址。 发现确实只写了“DNX4.5.1”和“DNXCore50”这两个版本我同时又打开了“Microsoft.Extensions.DependencyInjection”包的NuGet地址。 发现了“.NETFramework 4.5.1”、“.NETPlatform 5.4”、”.NETCore5.0”。 这时我很好奇这两个包同是vNext的产物没有原因支持的平台不一样啊抱着这个问题我觉得创建个ConsoleApp测试一下。 打开“project.json”发现了和类库不一样的地方 这边的frameworks的命名完全不一样 在类库中为“net451”、“dotnet5.4”而在这里变成了“dnx451”、“dnxcore50”。 困惑又加重了难道微软改名之后忘记改了ConsoleApp的模板 解惑 我试着把这几个关键词输入google找了了一些文章终于解决了我的迷惑。 文章地址为 https://github.com/aspnet/Announcements/issues/98 https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/standard-platform.md 从这段话中说明了为什么“ConsoleApp”和“类库”项目框架目标不一致是正常的。。。 也给出了“ConsoleApp”、“测试项目”还是需要使用“dnx”和“dnxcore”这样的命名而类库则需要使用“net”和“dotnet”这样的命名。 也给出了迁移方案同时也给出了编码过程中的环境变量 1.DNX451 NET451 2.DNXCORE50 DONET5_4 同时也发现微软觉得应用程序和测试项目该采用“dnx”和“dnxcore”命名方式的框架目标。 至此疑惑解开但还是觉得奇怪微软为什么要这样区分当时在.NET Framework上不就没有分这么多吗 深究 为什么微软需要这么做 抱着这样的疑问打开第二个链接发现了这一段很好的解释了“为什么”。 这么做只有一个目标可移植性。 在之前我们再用NuGet GUI工具打包的时候会发现有很多选择下图 而这些平台绝大数都拥有CLR唯一变的只是应用程序端只有这个端不一样那么我开发一个汇率计算算法需要每个平台单独写吗其实不需要因为我们都运行于CLR我们有CTS、CLS还有CLR这些东西你们去做兼容就好了不需要开发者在纠结了所以现在的微软一直强调“一个平台战略”、“一次编译到处运行”只把会变化的应用程序端设置框架版本而类库等通用的东西尽量变成全部可移植的。 下图来自微软 右边的就属于类库而左边的被微软定位为应用程序端的目标运行时。微软希望现代化的类库可以同时运行在这些端的运行时上当然这个动作需要端的运行时配合与支持微软给出的CLR的标准、语言规范等。 下图是对应关系 交流方式 QQ群384413261RabbitHub Emailmajian159live.com转载于:https://www.cnblogs.com/ants/p/5129279.html