在我们的 .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 中的公用类库了。

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

  1. .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正式版本发布时间大约在Q ...

  2. 微软Build 2017第二天 .NET Standard 2.0 Preview 的客户端跨平台

    微软公司一年一度的开发者大会,即“Microsoft Build 2017”在总部西雅图正式开幕.按照官方安排,本次大会将持续 3 天,主题围绕微软公司各项最新技术成果的展示和研讨,包括与微软相关的产 ...

  3. .NET Standard 2.0 特性介绍和使用指南

    .NET Standard 2.0 发布日期:2017年8月14日 公告原文地址 前言 早上起来.NET社区沸腾了,期待已久的.NET Core 2.0终于发布!根据个人经验,微软的产品一般在2.0时 ...

  4. [C#] .NET Core/Standard 2.0 编译时报“CS0579: Duplicate 'AssemblyFileVersionAttribute' attribute”错误的解决办法

    作者: zyl910 一.缘由 当创建 .NET Core/Standard 2.0项目时,VS不会像.NET Framework项目一样自动生成AssemblyInfo.cs文件. 而且,若是手工在 ...

  5. .NET Standard 2.0正式发布了

    亦可赛艇 前天(2017年8月14日),.NET Standard 2.0正式版终于发布了,与之相配套的.NET Core 2.0也同时正式发布,真是令人振奋. 详情请看:https://blogs. ...

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

    在上一篇文章中在ubuntu16.04中初次体验.net core 2.0 简单介绍了一下ubuntu中运行.net core 2.0.配置nginx反向代理以及安装supervisor守护进程……本 ...

  7. .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 ...

  8. 安装.Net Standard 2.0, Impressive

    此版本的.NET Standard现在支持大约33K的API,与.NET Standard 1.x支持的14K API相比.好的是大部分API来自.NET Framework.这使得生活更容易将代码移 ...

  9. 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 X ...

随机推荐

  1. 解决Ubuntu Chrome浏览器很卡不响应的问题

    1. 设定字体,使用Ubuntu Tweak Tool把系统字体设定为默认字体,而不是文泉驿字体: 2. 使用ADBLock Plus把垃圾的广告过滤掉,不然网页上很多Flash就会导致网页非常的卡顿 ...

  2. 使用Java合并图片、修改DPI

    项目中有时候需要对图片进行DPI.合并.拼接等的处理: package com.snow.web.a_test; import java.awt.Graphics; import java.awt.i ...

  3. SQL 中的多条件查询

    在应用程序开发中,多条件查询是个经常遇到的情况,最简单最麻烦的方法是把所有的可能情况都考虑到,但是无疑是繁琐的,而且很容易漏掉可能的情形,下面是SQL语句实现多条件查询的情况 select * fro ...

  4. mysql 5.7中的threads

    >desc threads; +---------------------+---------------------+------+-----+---------+-------+ | Fie ...

  5. css中border-radius用法详解

    border-radius:由浮点数字和单位标识符组成的长度值.border-top-left-radius --- 左上border-top-right-radius --- 右上border-bo ...

  6. Atitit 数据库 标准库  sdk 函数库 编程语言 mysql oracle  attilax总结

    Atitit 数据库 标准库  sdk 函数库 编程语言 mysql oracle  attilax总结 1.1. 常见的编程语言以及数据库 sql内部函数库标准化库一般有以下api1 1.2. 各个 ...

  7. JAVA和JAVAC 命令行

    转自:http://www.blogjava.net/pdw2009/archive/2008/06/12/207413.html?opt=admin javac和java命令行中的-classpat ...

  8. fresco xml配置属性不起作用

    在xml中配置加载等待图标,不起作用. 正确的如下: <?xml version="1.0" encoding="utf-8"?> <Line ...

  9. Java知多少(97)绘图模式概述

    绘图模式是指后绘制的图形与早先绘制的图形有重叠时,如何确定重叠部分的颜色.例如,后绘制的覆盖早先绘制的:或者后绘制与早先绘制的两种颜色按某种规则混合.主要有正常模式和异或模式两种:正常模式是后绘制的图 ...

  10. PHP最全笔记(五)(值得收藏,不时翻看一下)

    // 删除 方法1:将其值设置为空字符串 setcookie('user[name]', ''); 方法2:将目标cookie设为“已过期”状态. //将cookie的生存时间设置为过期,则生存期限与 ...