簡體   English   中英

Azure DevOps“NuGet pack”任務忽略/覆蓋 package 元數據

[英]Azure DevOps "NuGet pack" task ignores/overwrites package metadata

我在 Azure DevOps 中設置了一個簡單的 CI 管道,用於構建 .NET5 NuGet package,看起來像這樣

The pipeline is able to successfully pack and release the project as intended, but when I go to inspect the NuGet package, I find that all of the package metadata is missing (except for the version, which is correct, and the author(s) ,它錯誤地將 ADO 構建代理的名稱顯示為作者)。 我目前擁有位於 .csproj 文件中的所有 package 元數據。

是顯示錯誤元數據的屏幕截圖,當我查看由管道生成的 NuGet package 中的 .nuspec 時,也會顯示該元數據。 當然,當我在本地機器上打包項目時,所有的元數據都會按照應有的方式生成。

我看過另一篇與此類似的帖子,作者將管道切換為使用 dotnet 任務而不是 MSBuild 任務。 不幸的是,這對我來說不是一個選項,因為這個項目有 dotnet CLI 不支持的 COM 引用,所以 MSBuild 是我唯一的選擇。

有誰知道為什么我的管道中的“NuGet pack”任務沒有使用 my.csproj 文件中的元數據?

有誰知道為什么我的管道中的“NuGet pack”任務沒有使用 my.csproj 文件中的元數據?

根據文檔使用 MSBuild 創建 NuGet package

創建 package, msbuild -t:pack的命令在功能上等同於dotnet pack

在此處輸入圖像描述

在此處輸入圖像描述

或者您可以在.csproj文件中添加以下參數,當您使用 VS 構建任務構建項目時,它將創建 package:

<GeneratePackageOnBuild>true</GeneratePackageOnBuild>

這個問題的解決方案最終變得有些簡單。 'NuGet pack' 任務使用nuget.exe CLI ,它忽略 .csproj 文件中定義的元數據。 您必須創建一個.nuspec 文件,將所有元數據放入其中,然后將該文件添加到 .csproj 文件所在的同一目錄中。 一旦我這樣做了,我的 NuGet package 就生成了正確的元數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM