在.NET Core的迁移过程中,我们将原有的.NET Framework代码迁移到.NET Core。如果线上只有一个小型的应用还好,迁移升级完成后,只需要维护.NET Core这个版本的代码。

但是,如果是一个大型分布式应用,几百台Server,上千个.NET 应用进程。这种场景下,在一定的时期内,我们需要同时维护.NET Framework和.NET Core两套代码,同一个产品

特性,需要分别在两套代码中实现,这种代码同步的工作量是非常大的。因此,在这种场景下,有必要使用同一套代码既支持.NET Framework又支持.NET Core.

带着这个需求场景,我们展开今天的.NET Core技术研究分享。先总结一下整体的思路:

1. 在Project工程层面支持多个目标框架,面向不同的.NET 目标框架添加不同的引用

2. 代码中使用预处理指令同时支持.NET Framework 和 .NET Core

3. 编译生成两个.NET框架的Dll,制作支持多个.NET目标框架的Nuget包

我们先看第一步:

一、在Project工程层面支持多个目标框架,面向不同的.NET 目标框架添加不同的引用

在这个示例代码中,我们使用了.NET Standard 2.0 Class Library Project。 目标框架同时支持.NET Framework 4.5.1和.NET Standard 2.0

双击Project, 进入XML文件编辑模式

我们重点编辑TargetFramework这个节,改为TargetFrameworks,例如:

保存后,会提示:

全部重新加载后,新的Project的依赖项是这样的:

这样,这个Project就支持了多个.NET 目标框架,我们可以面向不同的.NET 目标框架添加不同的引用,当然如果依赖的Nuget也同时支持相同的.NET 目标框架,那就最匹配了:例如:Newtonsoft.Json

添加Nuget引用后,Project在不同的.NET 目标框架的引用是这样的:

当然,我们可以为单独为指定的.NET 目标框架添加不同的引用,例如:

参考链接:https://docs.microsoft.com/en-us/dotnet/standard/frameworks

二、. 代码中使用预处理指令同时支持.NET Framework 和 .NET Core

如果同一块业务逻辑,在.NET Framework和.NET Core实现不一样,我们在同一个代码中,如果通过预处理指令实现:

参考链接:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/preprocessor-directives/preprocessor-if

这个地方有个对照表:

这样,代码写完后,编译一下,可以看到有两个文件夹生成:

三. 编译生成两个.NET框架的Dll,制作支持多个.NET目标框架的Nuget包

上个步骤中生成的两个.NET 目标版本的dll,可以分别制作支持多个.NET 目标框架的Nuget包。

右键Project属性设置中,可以设置Nuget打包

编译工程:Successfully created package 'C:\Users\zhougq\source\repos\TestLibrary\bin\Debug\TestLibrary.1.0.0.nupkg'.

使用PackageExplorer编辑生成好的Nuget包:

以上就是本次的.NETCore 技术分享。

原文链接:https://www.cnblogs.com/tianqing/p/11614303.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

一套代码同时支持.NET Framework和.NET Core相关推荐

  1. Google 重磅发布 Flutter 2 !一套代码横扫 5 大系统

    (图片来自谷歌官方) 整理:郑丽媛 今日,谷歌重磅发布了下一代 Flutter -- 专为 Web.移动和桌面而构建的 Flutter 2! 作为谷歌免费开源的 UI 工具包,Flutter 帮助许多 ...

  2. 多重影分身:一套代码如何生成多个小程序?

    前言 影分身术,看过火影的都知道,一个本体,多个分身. 大家肯定要问了,那小程序开发跟影分身术也能扯上关系?没错,那自然就是:一套代码,多个小程序啦. 各位先别翻白眼,且听我细细说来. 如今小程序发展 ...

  3. JetBrains打造的开发神器,一套代码适应多端!

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:程序员编程 最近正在考虑开发一款APP,今天就看到一款基于多端的 UI 调试工具,一套代码适应多端,真的是太棒了,下面分享给大 ...

  4. 一套代码小程序WebNative运行的探索01

    前言 前面我们对微信小程序进行了研究:[微信小程序项目实践总结]30分钟从陌生到熟悉 并且用小程序翻写了之前一个demo:[组件化开发]前端进阶篇之如何编写可维护可升级的代码 之前一直在跟业务方打交道 ...

  5. 一套代码称霸5大端口,移动金融应用还能这样开发?

    在全面拥抱移动互联网的时代,传统金融机构转战移动金融应用已是大势所趋.但银行转型面临的问题非常之多,不仅仅是机构属性复杂和用户留存率的问题,在开发层面也一样陷入了开发效率较低.缺乏统一化标准.运维困难 ...

  6. 一套代码编译出ios和android,Hippy: Hippy 是一个新生的跨端开发框架,目标是使开发者可以只写一套代码就直接运行于三个平台(iOS、Android 和 Web)...

    Hippy 跨端开发框架 介绍 Hippy 是一个新生的跨端开发框架,目标是使开发者可以只写一套代码就直接运行于三个平台(iOS.Android 和 Web).Hippy 的设计是面向传统 Web 开 ...

  7. 如何让一套代码适配所有iOS设备尺寸?

    简介:随着移动互联网设备和技术的发展,各种移动设备屏幕尺寸层出不穷,折叠屏.分屏.悬浮窗等等,面对越来越多样的屏幕,如果为每种尺寸单独进行适配,不仅费时费力,还会增加端侧代码的开发与维护压力.如何让一 ...

  8. api 微信内置浏览器js_多端开发框架uni-app入坑指南,一套代码适用微信、头条等小程序...

    前言 hello 小伙伴们,现在我已经正式入坑 uni-app 了.uni-app 已经发布好几个月了,期间也是踩坑无数,但是官方秉承着不抛弃不放弃的精神,积极解决开发者的各种简单的.复杂的问题,在此 ...

  9. 一套代码两端运行不靠谱?是时候放弃 C++ 跨 Android、iOS 端开发!

    「Write once,run anywhere!」想必是很多开发者以及企业梦寐以求的愿望,但是在分析跨平台中的种种成本之后,我们不禁发问,这种策略真的靠谱吗? 近日,云存储公司 Dropbox 就此 ...

最新文章

  1. MySQL-source报错1064
  2. Memcache 安装与使用
  3. git查看改变的方法
  4. 海思芯片怎么使用tde给qt加速_屏幕决定电视画质上限,芯片决定电视画质下限...
  5. c52单片机控制l298n步进电机角度_【设计图文】单片机实现的步进电机控制系统(开题报告+论文+文献综述+外文翻译+DWG图纸)...
  6. java的框架是轻量级的_一站式轻量级框架 Spring
  7. 如何在SQL Server中实现错误处理
  8. 最简单的flex bison例子
  9. 属性数量限制android,骑马与砍杀2军队数量上限属性加成MOD
  10. TCP 理论概述与 Java 编码入门
  11. python: pandas 、dataframe 与hdf5
  12. 提供一个文档下载接口,用httpclient下载文件
  13. vue日历插件vue-calendar
  14. SWMM与Python的那些事 (一)
  15. Fastjson源码阅读:缺陷静态检查(上)
  16. ARP欺骗数据帧转发之MAC修改
  17. 在IntelliJ IDEA中,开发一个摸鱼看书插件
  18. 新人学Kungfu功夫开源量化,应该这样入手
  19. outs.write(baos.toByteArray()) 内存溢出
  20. 计算机木马犯罪类型,计算机木马病毒犯罪研究..doc

热门文章

  1. 蓝牙mesh网络基础
  2. ASP.NET Core中的依赖注入(4): 构造函数的选择与服务生命周期管理
  3. Mysql 查询统计练习
  4. Jmeter录制app脚本
  5. Navicat Premium 怎么安装比较快
  6. 手游开发者交流会议暨OGEngine新版发布
  7. cacti+nagios 整合遇到的问题
  8. error LNK2001: unresolved external symbol public: __thiscall CNaDialog::CNaDialog(class CWnd *)
  9. 做操作系统的公司,为什么不能把系统安全做好?
  10. .net 垃圾回收机制