发布 Rafy .NET Standard 版本 Nuget 包
去年年中,Rafy 框架的源码就已经支持了 Net Standard 2.0 版本。其开源代码也已经上传到 Github 中:https://github.com/zgynhqf/rafy/tree/NetStandard2.0 。但是这都只是在源码层面支持 NS2.0,并没有发布其正式的 Nuget 包。要使用这个版本的开发者,不得不自己下载源码进行编译。
最近,使用 Net Core 的开发者越来越多。所以我们决定发布一个正式的 Nuget 包,以方便 Net Core 的开发都可以方便地下载、更新 Rafy 框架进行使用。
发布后,开发者在 Nuget 中再搜索 Rafy 的最新版本时,就已经支持 Net Standard 2.0 了:
项目支持多版本的改造步骤
过程中其实没有想到,要发布一个同时支持 Net Standard 2.0 和 Net Framework 4.5 版本的 Nuget 包,还是比较繁琐的。需要将原来的两个分支的代码合并到一起,并通过预处理命令来分别编译为不同版本。
下面,简单记录一下一些重要的步骤:
创建并使用新的 Net Standard 项目文件格式来创建。
修改 Rafy.csproj 文件,使其支持多个 .NET 版本:
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFrameworks>net45;netstandard2.0</TargetFrameworks>
Rafy.csproj 文件中,为不同的版本添加不同的引用:
<ItemGroup Condition="'$(TargetFramework)' == 'net45'"><Reference Include="PresentationFramework" /><Reference Include="System" /><Reference Include="System.Configuration" /><Reference Include="System.Core" /><Reference Include="System.Runtime.Caching" /><Reference Include="System.Runtime.Serialization" /><Reference Include="System.ServiceModel" /><Reference Include="System.Transactions" /><Reference Include="System.Web" /><Reference Include="System.Xaml" /><Reference Include="System.Xml.Linq" /><Reference Include="System.Data.DataSetExtensions" /><Reference Include="Microsoft.CSharp" /><Reference Include="System.Data" /><Reference Include="System.Xml" /><Reference Include="WindowsBase" /><PackageReference Include="Castle.Core" Version="4.1.1" /><PackageReference Include="Newtonsoft.Json" Version="10.0.3" /></ItemGroup><ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'"><PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="2.0.0" /><PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="2.0.0" /><PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.0" /><PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.0" /><PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.0.0" /><PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.0.0" /><PackageReference Include="Newtonsoft.Json" Version="10.0.3" /><PackageReference Include="System.ComponentModel" Version="4.3.0" /><PackageReference Include="System.ComponentModel.TypeConverter" Version="4.3.0" /><PackageReference Include="System.Data.Common" Version="4.3.0" /><PackageReference Include="Castle.Core" Version="4.1.1" /><PackageReference Include="System.Data.SqlClient" Version="4.4.0" /></ItemGroup>
还可以自定义一些缩写的常量:
<PropertyGroup Condition="'$(TargetFramework)'=='netstandard2.0'"><DefineConstants>NS2</DefineConstants></PropertyGroup>
修改合并后的项目中的所有相关代码,都使用预处理命令来区别不同的版本,如:
private void EnsureLoaded() { if (_section == null){ #if NET45_section = ConfigurationManager.GetSection("rafy") as RafyConfigurationSection; if (_section == null) _section = new RafyConfigurationSection(); #endif#if NS2var rafyRawSection = ConfigurationHelper.Configuration.GetSection("rafy"); if (rafyRawSection == null){ throw new InvalidProgramException("配置文件中没有 rafy 配置节,请检查配置文件。");}_section = new RafyConfigurationSection();rafyRawSection.Bind(_section); #endif}}
配置项目为编译时生成对应的 Nuget 包。
生成,并发布。最终生成的 Nuget 包格式是这样的:
通过上述几步,就使得 Rafy 框架支持了 Net Standard 版本了。同时,我们还把 Rafy 中的一些其它公共插件也都支持了多版本。以后会不定期升级每一个插件。
原文地址: http://www.cnblogs.com/zgynhqf/p/9015478.html
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
发布 Rafy .NET Standard 版本 Nuget 包相关推荐
- 从Nuget官网上下载指定版本Nuget包
如何使用Nuget软件下载Nuget包已经有许多帖子(如1.2)进行了介绍,但是这种方式需要在电脑上安装Nuget软件. 其实Nuget官网同样可以下载指定版本的Nuget包,例如对于Newtonso ...
- 容器环境下如何将NuGet包XML文档添加到Swagger
容器环境下将NuGet包XML文档添加到Swagger 在.NET Core项目开发过程中,为了实现代码复用,我们将可以重复使用的部分拆分成一个个小的NuGet包.这些NuGet包可以在其他系统中复用 ...
- 发布nuget包的正确姿势---cicd自动打包发布
最轻便的发布nuget包方式,方便cicd自动打包发布nuget包 首先新建项目 项目名随便取,这里就叫它GuiH.ClassLibrary 默认即可,需要改目标版本时,等创建好再改 项目创建好了 随 ...
- 使用Azure Pipelines从GitHub发布NuGet包
[本文目录] ps: 阅读本文大概需要20分钟 欢迎大家点击上方公众号链接关注我,了解新西兰码农生活 什么是 YAML? name/value 名称/值 collections 集合 multiple ...
- 基于 .Net Core 的组件 Nuget 包制作 amp; 发布
微软的 ASP.Net Core 强化了 Nuget 的使用,所有的 .Net Core 组件均有 Nuget 管理,所以有必要探讨一下 .Net Core 组件制作 Nuget 包和发布. 之前 . ...
- 解决 .net core 中 nuget 包版本冲突问题
解决 .net core 中 nuget 包版本冲突问题 参考文章: (1)解决 .net core 中 nuget 包版本冲突问题 (2)https://www.cnblogs.com/dudu/p ...
- 使用 dotnet-outdated 维护项目 nuget 包版本
使用 dotnet-outdated 维护项目 nuget 包版本 Intro 我们项目中或多或少都会有一些 NuGet 包,使用到 NuGet 包时,如何保证我们的 NuGet 包不会太旧呢?我们可 ...
- [NET Core] Nuget包发布流程
1.新建一个.NET Core类库 2.新增一个方法,并编译项目 3.下载Nuget.exe,与刚才新建的类库放在同一目录下 下载地址:https://www.nuget.org/downloads ...
- pipelines php,Azure DevOps 2020(五)使用 Pipelines 自动化发布 NUGET 包
相关资源下载 Azure DevOps 2020(一)初识微软 Azure DevOps(TFS) https://www.itsvse.com/thread-9239-1-1.html Azure ...
最新文章
- 信号调制疑问_DSM 调制器simulink仿真分析
- orange pi java_[中文]Orange Pi家族各大成员一览表
- 我花了十多分钟的i698源代码时间
- 机器学习(四)高斯混合模型
- 《Cortex-M0权威指南》之Cortex-M0技术综述
- 红帽企业存储管理之iscsi简单应用
- 腾讯技术分享:Android版手机QQ的缓存监控与优化实践
- php函数copy和rename的区别
- 21天学通mysql_《21天学通JavaWeb》 - 随笔分类 - 疯狂delphi - 博客园
- 浅谈微信公众号,微信开放平台和微信商户号的区别
- 时间序列分析 | 相似性度量基本方法
- 公众号被封小感:你是否拥有绝地反击的能量?
- 一文了解 Serverless 究竟是什么
- 微信小程序、公众号侵权投诉流程
- 春风吹又生(1年工作经验感悟)
- jsp 的ne 什么意思
- jQuery中$()函数有几种用法
- 「 iOS知识小集 」2018 · 第 29 期
- 盘点2021年针对我国的网络安全事件!
- vue把localhost改成ip地址无法访问—解决方法
热门文章
- Idea maven项目不能新建package和class的解决
- [MySQL]关于amd.dll后门病毒入侵3306端口的临时解决方案
- 智能实验室-全能优化(Guardio) 4.0.0.670 beta 8
- dotNet Core使用SignalR实现websocket
- C#的dapper使用
- Win10 Terminal + WSL 2 安装配置指南
- C# Lambda表达式详解,及Lambda表达式树的创建
- 欲善其事,先利其器 | IDCF第6期DevOps案例研究回顾(附视频)
- Redis集群搭建很easy
- Blazor VS React / Angular / Vue.js