簡體   English   中英

nuget package 使用 VisualStudio 部署發布與 msbuild 發布

[英]nuget package deploy with VisualStudio publish vs. msbuild publish

我正在嘗試將 a.netstandard2.0 class 庫 nuget 部署到本地文件夾存儲庫(在 FolderProfile.pubxml 中指定)。 這可以通過 VisualStudio 對項目的發布上下文操作正常工作:幕后過程根據項目.csproj 構建項目並打包所需項目,然后根據 FolderProfile.pubxml 復制 nuget package。 我預計這也可以通過 msbuild 實現(用於腳本)。

msbuild /t:Publish /p:PublishProfile=FolderProfile.pubxml 

這將構建項目並將 bin/ Debug.ne tstandard2.0 的內容復制到本地文件夾存儲庫。 不幸的是,這與要求的不同,PublishProfile 指定發布配置和項目.csproj 明確指出要打包的 just.dll(既不是.deps.json 也不是.pdb)

msbuild /t:Pack

根據項目.csproj 打包 nuget 內容,但將 package 留在 bin/ Debug中。

切換到 Release 可以通過/p:Configuration=Release實現,但這仍然不足以達到預期的效果。

我創建了一個簡單的演示項目,可在https://github.com/JanCervak/NugetPublishDifferenceRepro獲得,本地文件夾存儲庫設置為 %TEMP%

使用 VS 2019 16.8.3

class 庫項目的 VS IDE 的發布按鈕是msbuild -t:pack而不是msbuild -t:publish

VS IDE上,當您單擊 lib 項目的發布按鈕時,它實際上會執行打包按鈕以創建從pubxml文件讀取的 nuget 包。 它是VS IDE的特殊功能,是由VS IDE中的集成任務、工具引起的。換句話說,它是由那個設計的。 針對不同的 vs 項目Publish Button 的作用不同。

但是,當您使用msbuild -t:publish命令行中的 lib 項目時,它擺脫了 VS IDE 環境,它像 web 項目、windows 項目一樣執行 function。(將最終的 88343718 文件放入自定義發布文件夾) .

因此,如果你想對 lib 項目使用與VS IDE相同的命令 function,你應該放棄pubxml文件並使用此命令:

  msbuild NugetPublishDifferenceRepro.csproj -t:pack -p:Configuration=Release;Platform=AnyCPU;PackageOutputPath=%Temp%

PackageOutputPath用於pack target,指定生成的路徑 nuget package。

暫無
暫無

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

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