.NET Nuget软件包验证未显示破坏更改的任何输出

发布于 2025-01-19 11:35:50 字数 2806 浏览 3 评论 0原文

我有一个创建 nuget 包的 .NET 项目,我想添加 PackageValidation,如下所述: https://learn.microsoft.com/en-us/ dotnet/fundamentals/package-validation/overview

我的 sdk 样式项目文件中有这些行:

<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>symbols.nupkg</SymbolPackageFormat>
<EnablePackageValidation>true</EnablePackageValidation>
<PackageValidationBaselineVersion>8.0.1</PackageValidationBaselineVersion>

但是即使我向程序集添加了重大更改,我也没有得到任何输出。

仅当我将 BaseLineVersion 更改为不存在的数字时,我才会看到一些相关输出:

SsiProxyNuGet.csproj : error NU1102: Unable to find package SsiProxy with version (= 8.0.0)
SsiProxyNuGet.csproj : error NU1102:   - Found 4 version(s) in ASM-NuGet [ Nearest version: 8.0.1 ]
SsiProxyNuGet.csproj : error NU1102:   - Found 0 version(s) in Microsoft Visual Studio Offline Packages
SsiProxyNuGet.csproj : error NU1102:   - Found 0 version(s) in nuget.org

Does Anybody has the .net package validatingworking?

更新: 我创建了一个新的 .NET 6 项目来测试,发布了版本 1.0.0 的包,将版本增加到 1.0.1,并对库进行了重大更改。然后我在构建时收到此消息:

错误 CP0002:[Baseline] lib/net6.0/PackageValidationTest.dll 上存在成员“PackageValidationTest.Calc.Sum(int, int)”,但 lib/net6.0/PackageValidationTest.dll 上不存在成员“PackageValidationTest.Calc.Sum(int, int)”

为什么这不适用于我现有的项目???

更新2: 对 .Net6、.net standard 2.0 和 .net 4.8 中的新项目进行了更多测试和验证。

对于我的新 .net 4.8 项目,在添加重大更改后,我在输出中看到了这一点:

目标运行包验证: 使用程序集“C:\Program Files\dotnet\sdk\6.0.201\Sdks\Microsoft.NET.Sdk\targets..\tools\net472\Microsoft.DotNet.Compatibility 中的“Microsoft.DotNet.Compatibility.ValidatePackage”任务。 dll”。 任务“Microsoft.DotNet.Compatibility.ValidatePackage” 版本 1.0.0 和 1.0.1 的“lib/net48/PackageValidationTestNetFramework.dll”(左)和“lib/net48/PackageValidationTestNetFramework.dll”(右)之间 API 表面的重大更改: C:\Program Files\dotnet\sdk\6.0.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Compatibility.Common.targets(32,5):错误 CP0002:成员 'PackageValidationTestNetFramework.Calc.Sum( int, int)' 存在于 [Baseline] lib/net48/PackageValidationTestNetFramework.dll 上,但不存在于lib/net48/PackageValidationTestNetFramework.dll 已完成执行任务“Microsoft.DotNet.Compatibility.ValidatePackage”——失败。

对于我现有的项目,它仍然无法识别重大更改。至少我看到 msbuild 目标被调用:

目标运行包验证: 使用程序集“C:\Program Files\dotnet\sdk\6.0.201\Sdks\Microsoft.NET.Sdk\targets..\tools\net472\Microsoft.DotNet.Compatibility 中的“Microsoft.DotNet.Compatibility.ValidatePackage”任务。 dll”。 任务“Microsoft.DotNet.Compatibility.ValidatePackage” 已完成执行任务“Microsoft.DotNet.Compatibility.ValidatePackage”。

I have a .NET project that creates a nuget package and I wanted to add PackageValidation as described here:
https://learn.microsoft.com/en-us/dotnet/fundamentals/package-validation/overview

I have these lines in my sdk-style project file:

<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>symbols.nupkg</SymbolPackageFormat>
<EnablePackageValidation>true</EnablePackageValidation>
<PackageValidationBaselineVersion>8.0.1</PackageValidationBaselineVersion>

But I don't get any output, even if I add breaking changes to my assembly.

Only when I change the BaseLineVersion to a number that does not exist, I see some related output:

SsiProxyNuGet.csproj : error NU1102: Unable to find package SsiProxy with version (= 8.0.0)
SsiProxyNuGet.csproj : error NU1102:   - Found 4 version(s) in ASM-NuGet [ Nearest version: 8.0.1 ]
SsiProxyNuGet.csproj : error NU1102:   - Found 0 version(s) in Microsoft Visual Studio Offline Packages
SsiProxyNuGet.csproj : error NU1102:   - Found 0 version(s) in nuget.org

Does anybody have the .net package validation working?

Update:
I created a new .NET 6 project to test, published a package with version 1.0.0, increased my version to 1.0.1 and made a breaking change to the library. Then I get this message when building:

error CP0002: Member 'PackageValidationTest.Calc.Sum(int, int)' exists on [Baseline] lib/net6.0/PackageValidationTest.dll but not on lib/net6.0/PackageValidationTest.dll

Why does this not work with my existing project???

Update2:
Did some more testing and validation works with new projects in .Net6, .net standard 2.0 and .net 4.8.

For my new .net 4.8 project I see this in the output after adding a breaking change:

Target RunPackageValidation:
Using "Microsoft.DotNet.Compatibility.ValidatePackage" task from assembly "C:\Program Files\dotnet\sdk\6.0.201\Sdks\Microsoft.NET.Sdk\targets..\tools\net472\Microsoft.DotNet.Compatibility.dll".
Task "Microsoft.DotNet.Compatibility.ValidatePackage"
Breaking changes to the API surface between 'lib/net48/PackageValidationTestNetFramework.dll' (left) and 'lib/net48/PackageValidationTestNetFramework.dll' (right) for versions 1.0.0 and 1.0.1 respectively:
C:\Program Files\dotnet\sdk\6.0.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Compatibility.Common.targets(32,5): error CP0002: Member 'PackageValidationTestNetFramework.Calc.Sum(int, int)' exists on [Baseline] lib/net48/PackageValidationTestNetFramework.dll but not on lib/net48/PackageValidationTestNetFramework.dll
Done executing task "Microsoft.DotNet.Compatibility.ValidatePackage" -- FAILED.

For my existing project it still does not recognize the breaking change. At least I see that the msbuild target gets called:

Target RunPackageValidation:
Using "Microsoft.DotNet.Compatibility.ValidatePackage" task from assembly "C:\Program Files\dotnet\sdk\6.0.201\Sdks\Microsoft.NET.Sdk\targets..\tools\net472\Microsoft.DotNet.Compatibility.dll".
Task "Microsoft.DotNet.Compatibility.ValidatePackage"
Done executing task "Microsoft.DotNet.Compatibility.ValidatePackage".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

幻想少年梦 2025-01-26 11:35:50

在我的例子中,PackageValidation 没有显示任何输出,因为 PackageID 与 AssemblyName 不同。

MS 已经修复了这个问题。 https://github.com/dotnet/sdk/issues/23646

请参阅我测试过的 带有预发布包,效果很好:)

PackageValidation did not show any output in my case, because the PackageID is different than the AssemblyName.

This is already fixed by MS. See https://github.com/dotnet/sdk/issues/23646

I tested with a prerelease-package and this works fine :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文