欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.NET?6新特性試用之Nuget包驗(yàn)證

 更新時(shí)間:2022年03月15日 10:53:29   作者:My?IO  
這篇文章主要介紹了.NET?6新特性試用之Nuget包驗(yàn)證,將.NET類庫(kù)打包成Nuget包,以便多個(gè)項(xiàng)目公用,下面我們就來學(xué)習(xí)西還內(nèi)容,詳細(xì)資料需要的朋友可以參考下面文章

前言:

我們常常需要將.NET類庫(kù)打包成Nuget包,以便多個(gè)項(xiàng)目公用。

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

而在.Net 6中,提供了包驗(yàn)證工具,幫助我們檢測(cè)這一點(diǎn)。

Demo

使用方式也非常簡(jiǎn)單,只需修改項(xiàng)目文件,加上??EnablePackageValidation??屬性:

<EnablePackageValidation>true</EnablePackageValidation>

包驗(yàn)證工具提供了三種驗(yàn)證器:

  • ?Baseline version validator?:根據(jù)先前發(fā)布的穩(wěn)定版本的軟件包驗(yàn)證類庫(kù)項(xiàng)目。
  • ?Compatible runtime validator?:驗(yàn)證特定于運(yùn)行時(shí)的實(shí)現(xiàn)程序集是否彼此兼容以及是否與編譯時(shí)程序集兼容。
  • ?Compatible framework validator?: 驗(yàn)證針對(duì)一個(gè)框架版本編譯的代碼同樣可以在包中的所有其他框架版本上運(yùn)行。

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

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

當(dāng)我們接到需求,為??Demo??方法增加了參數(shù):

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

代碼邏輯沒有問題,但是當(dāng)我們發(fā)布1.1.0版本后,而引用了這個(gè)包的項(xiàng)目也包含引用過1.0.0版本的其他類庫(kù)。那么運(yùn)行時(shí)很可能收到如下異常:

現(xiàn)在讓我們加上??Baseline version validator??。修改類庫(kù)項(xiàng)目文件內(nèi)容如下:

<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??就是用于對(duì)比的基線版本。

再次使用??dotnet pack??打包,你將會(huì)收到類似如下錯(cuò)誤提示:

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

按照消息提示的那樣,我們可以修改成如下代碼進(jìn)行修復(fù):

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}");
? ? }
}

結(jié)論:

?包驗(yàn)證工具允許開發(fā)人員在包開發(fā)過程中驗(yàn)證他們的包是否一致且格式良好。它允許開發(fā)人員根據(jù)以前的版本、框架的版本和運(yùn)行時(shí)來驗(yàn)證包。??

到此這篇關(guān)于.NET 6新特性試用之Nuget包驗(yàn)證的文章就介紹到這了,更多相關(guān) Nuget包驗(yàn)證內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論