• 实际体验 .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 中的公用类库了。

  • 相关阅读:
    nextcloud环境搭建及部署
    docker容器内访问宿主机,访问不通 错误:Host is unreachable
    记录一下SQL的行行比较
    记录一次nginx平滑升级
    letsencrypt免费SSL证书自动续期
    守护进程因echo挂掉的原因,以及重定向标准输入、标准输出和标准错误
    openresty lua-nginx-module模块中文文档
    nginx localhost的坑
    PHP7 MongoDb的操作类
    tomcat 性能检测
  • 原文地址:https://www.cnblogs.com/dudu/p/7907124.html
Copyright © 2020-2023  润新知