釋出 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 NS2
var 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://news.mmw6064.cn/
http://news.bed0568.cn/
http://www.epi0997.cn/
http://news.dye6768.cn/
http://www.ecc2991.cn/
http://www.aht8537.cn/
http://news.bjb5476.cn/
http://www.cxb4532.cn/
http://www.myb6827.cn/
http://www.tae4138.cn/
http://www.vlq7732.cn/
http://www.mox2684.cn/
http://www.ysz1764.cn/
http://www.pzx0011.cn/
http://www.pdh7765.cn/
http://www.wdr5566.cn/
http://www.dmb8658.cn/
http://news.kft8401.cn/
http://www.wky3695.top/
http://news.bxb7451.cn/
http://news.ryh7899.cn/
http://www.mxz6626.top/
http://news.fyc7738.cn/
http://www.lhb4836.cn/
http://www.rvc0755.cn/
http://news.bpl6646.cn/
http://news.gzh1725.cn/
http://news.sfi6595.cn/
http://news.osi0013.cn/
http://news.hxl6493.cn/
http://news.zce9839.cn/
http://news.xum5501.cn/
http://news.dec9975.cn/
http://www.mrw5927.top/
http://news.mtj9347.cn/
http://www.jwd3113.top/
http://www.ubb2737.top/
http://www.fxm1291.top/
http://www.mtj9347.cn/
http://www.fsh3334.cn/
http://news.kdd4058.cn/
http://news.kme4313.cn/
http://www.vpk8803.cn/
http://news.zpp0623.cn/
http://www.ywb6045.cn/
http://news.ffr2858.cn/
http://news.hij5984.cn/
http://www.csv7317.cn/
http://www.ylg5948.top/
http://www.mco2769.cn/
http://www.hmb6894.cn/
http://news.hqh7518.cn/
http://www.bpj4889.cn/
http://www.tux4376.top/
http://www.bwb3762.cn/
http://news.tub1546.cn/
http://news.jxa6372.cn/
http://www.fmh8265.cn/
相關文章
- 釋出nuget包的正確姿勢---cicd自動打包釋出nuget包
- 釋出Nuget包時遇到都意外
- .NET Standard中配置TargetFrameworks輸出多版本類庫Framework
- 讓你釋出的nuget包支援原始碼除錯原始碼除錯
- NuGet是什麼?為什麼.NET專案中會有NuGet?如何使用NuGet程式包?
- nuget包管理:製作、釋出包到nuget伺服器、從nuget伺服器刪除包伺服器
- 開發.NET Core NuGet包並實現CI/CD
- .NET Aspire預覽5版本 釋出
- PowerShell一鍵下載Nuget某個包的所有版本
- 釋出nuget 如何配置專案檔案
- GitLab 管理 NuGet 包Gitlab
- .NET Standard是什麼
- .NET Core 3.1釋出,支援三年的LTS版本
- OpenAI 釋出適用於 .NET 庫的穩定版本OpenAI
- .NET 5.0 RC1 釋出,離正式版釋出僅剩兩個版本
- 建立NuGet本地包源
- .NET Standard 類庫的使用技巧
- .NET Standard 來日苦短去日長
- NET core 釋出時幹掉多餘的語言包-
- nuget使用經驗:複雜依賴關係下的包版本問題
- .net5NuGet安裝包Spire.PDF實現PDF轉圖片
- jQuery 釋出 3.4.0 版本jQuery
- Rust 1.83.0 版本釋出Rust
- 為什麼.NET Standard 仍然有意義?
- 開發現代化的.NetCore控制檯程式:(4)使用GithubAction自動構建以及釋出nuget包NetCoreGithub
- VS2022 修改nuget包位置
- nuget 包是如何還原的
- 將本地nuget包推送到Nexus
- .NET 8正式釋出
- .NET 5.0釋出 - microsoftROS
- .NET Framework 4.8釋出Framework
- 釋出npm包流程NPM
- OpenAI正式釋出第一個官方.NET版本庫的測試版OpenAI
- 龍芯釋出 .NET 6 SDK 6.0.105-ea1 LoongArch64 版本
- 使用 nuget server 的 API 來實現搜尋安裝 nuget 包ServerAPI
- .net 5+ 知新:【2】 .Net Framework 、.Net 、 .NET Standard的概念與區別Framework
- SOA新版本釋出
- openGauss 2.0.0 版本正式釋出