日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET 6新特性试用 | Nuget包验证

發布時間:2023/12/4 asp.net 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET 6新特性试用 | Nuget包验证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

我們常常需要將.NET類庫打包成Nuget包,以便多個項目公用。

一旦修改類庫,盡管代碼可以運行,并成功打包成新版本,看起來一切正常,但是你無法保證該更改是安全且兼容的。

而在.Net 6中,提供了包驗證工具,幫助我們檢測這一點。

Demo

使用方式也非常簡單,只需修改項目文件,加上EnablePackageValidation屬性:

<EnablePackageValidation>true</EnablePackageValidation>

包驗證工具提供了三種驗證器:

  • Baseline version validator:根據先前發布的穩定版本的軟件包驗證類庫項目。

  • Compatible runtime validator:驗證特定于運行時的實現程序集是否彼此兼容以及是否與編譯時程序集兼容。

  • Compatible framework validator: 驗證針對一個框架版本編譯的代碼同樣可以在包中的所有其他框架版本上運行。

以Baseline version validator為例。假設1.0.0版本有如下方法:

public?class?Class1 {public?void?Demo(string?param1){?Console.WriteLine("Demo?1.0.0:?{param1}");} }

當我們接到需求,為Demo方法增加了參數:

public?class?Class1 {public?static?void?Demo(string?param1,?string?param2){Console.WriteLine("Demo?1.1.0:?{param1}?{param2}");} }

代碼邏輯沒有問題,但是當我們發布1.1.0版本后,而引用了這個包的項目也包含引用過1.0.0版本的其他類庫。那么運行時很可能收到如下異常:

現在讓我們加上Baseline version validator。修改類庫項目文件內容如下:

<Project?Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>net6.0</TargetFramework><PackageVersion>1.1.0</PackageVersion><EnablePackageValidation>true</EnablePackageValidation><PackageValidationBaselineVersion>1.0.0</PackageValidationBaselineVersion></PropertyGroup></Project>

PackageValidationBaselineVersion就是用于對比的基線版本。

再次使用dotnet pack打包,你將會收到類似如下錯誤提示:

error?CP0002:?Member?'ClassLibrary1.Class1.Demo(string)'?exists?on?[Baseline]?lib/net6.0/ClassLibrary1.dll?but?not?on?lib/net6.0/ClassLibrary1.dll

按照消息提示的那樣,我們可以修改成如下代碼進行修復:

public?class?Class1 {public?static?void?Demo(string?param1){Demo(param1,"");}public?static?void?Demo(string?param1,?string?param2){Console.WriteLine("Demo?1.1.0:?{param1}?{param2}");} }

結論

包驗證工具允許開發人員在包開發過程中驗證他們的包是否一致且格式良好。它允許開發人員根據以前的版本、框架的版本和運行時來驗證包。

如果你覺得這篇文章對你有所啟發,請關注我的個人公眾號”My IO“

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的.NET 6新特性试用 | Nuget包验证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。