实际体验 .NET Standard 2.0 的魅力

在我们的 .net core 大迁移工程中,有些项目完成了迁移,有些还未迁移,这就带来了一个烦恼——我们自己开发的公用类库如何在 .net core 与 .net framework 项目中共享?如果不能共享,就得痛苦地针对同一个功能分别写 .net core 版与 .net framework 版。迁移开始的一段时间,我们就干了这样的傻事。

最近我们又遇到了这个问题,但今非昔比,如今已经有了为此而生的羽翼丰满的 .net standard 2.0 ,再加上 Artech 这篇醍醐灌顶的博文 .NET Core跨平台的奥秘[下篇]:全新的布局 解释清楚了 .net standard 的原理,于是可以借此机会实际体验一下 .net standard 2.0 的魅力。

需要在 .net core 与 .net framework 中共享的类库,只需创建一个 .net standard 类库项目 ,然后发布为 nuget 包。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>
</Project>

在 asp.net core 项目中直接安装这个 nuget 包即可。

在基于 .net framework 的传统 asp.net 项目中呢?。。。也是直接安装这个 nuget 包即可,这么简单?是的,就这么简单!

但有一个不同之处,传统 asp.net 项目安装 nuget 包时会自动安装一个依赖包 NETStandard.Library ,这个包中装的是以下42个程序集:

.net framework 应用能够引用基于 .net standard 的类库靠的就是上面的这些程序集,其中最重要的角色是 netstandard.dll ,它是一个垫片程序集,由它负责将对 .net standard api 的调用转发到 .net framework 中对应的真正干活的程序集,实现了 .net framework 与 .net core 的类库共享。

另外,有一个地方需要注意,在一个传统 asp.net 解决方案中,如果只是在该解决方案的类库项目中安装了 .net standard 的 nuget 包,编译 web 项目时并不会将上面的42个程序集复制到 web 项目的 bin 文件夹中,需要在 web 项目中再安装一下  NETStandard.Library nuget 包。

帅!这下还未完成迁移的传统 asp.net 项目可以先直接调用 .net core 中的公用类库了。

时间: 2024-08-24 17:53:06

实际体验 .NET Standard 2.0 的魅力的相关文章

.NET Core 2.0及.NET Standard 2.0

.NET Core 2.0的发布时间,.NET Core 2.0预览版及.NET Standard 2.0 Preview大概在5月中旬或下旬发布. .NET Core 2.0正式版本发布时间大约在Q3 2017发布,具体我估计大概在8月份左右.同时一起发布的也就是.NET Standard 2.0. Milestone Release Date .NET Core 2.0 Preview Q2 2017 .NET Standard 2.0 Preview Q2 2017 .NET Core 2

Introducing XAML Standard and .NET Standard 2.0

XAML Standard We are pleased to announce XAML Standard, which is a standards-based effort to unify XAML dialects across XAML based technologies such as UWP and Xamarin.Forms. XAML Standard is a specification that defines a standard XAML vocabulary. W

.NET Core 2.0及.NET Standard 2.0 Description

NET Core 2.0的发布时间,.NET Core 2.0预览版及.NET Standard 2.0 Preview大概在5月中旬或下旬发布. .NET Core 2.0正式版本发布时间大约在Q3 2017发布,具体我估计大概在8月份左右.同时一起发布的也就是.NET Standard 2.0. Milestone Release Date .NET Core 2.0 Preview Q2 2017 .NET Standard 2.0 Preview Q2 2017 .NET Core 2.

在ubuntu16.04中再次体验.net core 2.0

在上一篇文章中在ubuntu16.04中初次体验.net core 2.0 简单介绍了一下ubuntu中运行.net core 2.0.配置nginx反向代理以及安装supervisor守护进程--本来安装supervisor(对他不是很了解,在其他的文章中看到这么用)目的是让我们应用程序开机启动,但是现在win10 Linux子系统用不了systemctl这个命令:https://github.com/Microsoft/WSL/issues/1990 (不知道理解的对不对),之后看到微软官方

.NET Standard 2.0 是什麼?可以吃嗎?

转自http://blog.darkthread.net/post-2016-09-27-net-standard-2-0.aspx  黑暗执行者 .NET Standard 2.0 是什麼?可以吃嗎? 這幾天(9/26-30) Microsoft Ignite 2016(去年起由 Ignite 取代 TechEd)正在美國如火如荼召開,乍見一個新名詞-.NET Standard 2.0.我得了一種聽到新名詞就會焦慮的病,趕緊查資料壓壓驚- .NET Team Blog 同步貼了一篇介紹文,可說

[Xamarin] - Xamarin.Forms Project with .Net Standard 2.0

1. Install .NET Core 2.0 SDK .https://www.microsoft.com/net/download/core 2. Install Android 7.1 (API 25) SDK. 3. New .NET Standard Project With Nuget Update:Microsoft.EntityFrameworkCore.2.0.0Microsoft.EntityFrameworkCore.Sqlite.2.0.0Xamarin.Forms.2

华为荣耀 4x 刷机体验 直奔 Android 6.0

序 手机是 华为荣耀 4X Android 4.4.4 最近手机运行缓慢,卡顿明显.需要清理一下手机, 主要的垃圾来自于微信,占用的空间太多了,使用360手机助手 + 360卫士将微信内以及系统的的垃圾清理干净,有一些小视频可以导出哦,很是方便. 完毕后,发现 HiSuit 有个刷机按钮,出于好奇,点了进去,有三个版本: 极客版 ( 有两个Android 5.1) 正式版 (有两个版本, Android 4.4 和 Android 5.1) 发货版 ( 这里是空的) 考虑到稳定性,还是选择了正式

更好的小票打印体验,huanent.printer2.0发布

huanent.printer2.0是一个专注消费小票打印的类库.拥有许多先进的特性例如居中打印.自动换行等特性,可以通过简洁的代码来打印出复杂的消费小票.huanent.printer通过MIT方式授权,可随意用于商业用途,只要注明作者即可. 你可以通过github获取源码与提交bug:https://github.com/huanent/Huanent.Printer huanent.printer已上传至nuget,可在nuget直接搜索名称huanent.printer安装 下面三幅图是

一个还算简单的微信消息SDK(基于.Net Standard 2.0)

虽然微信公众号出现了好久,不过在SDK这件事情上感觉并没有多少人把它当成一个有技术含量的事情来做,很多SDK做的事情就是一个代码的堆叠,当然也可能写的好的并没有开源出来.所以在某个翻遍Github而无所获的下午我写了一个基础的基于事件的微信消息类,今年初我把它放到了github和开源中国上并逐步完善,这篇文章就是简单介绍OSS开源系列下的微信消息模块SDK的使用方式,主要围绕以下几个方面分解: 一. 全局介绍 二. 配置管理 三. 框架使用 1. 框架组成元素 2. 框架支持的模式 四. 生命周