簡體   English   中英

如何設置Visual Studio來構建NuGet包?

[英]How do I set Visual Studio to build a NuGet package?

如何在構建時讓Visual Studio為我的庫組件構建NuGet包?

我正在使用可移植類庫作為示例項目。

  • 確保NuGet.exe文件夾中的.nuget文件是最新的。

  • 默認值來自AssemblyInfo.cs ,因此請進行清理。

  • 如果不引用任何內容,則最好添加一個NuGet包引用,最好是像JSON.NET這樣的簡單引用。 通常,PCL項目沒有外部依賴性,在這種情況下,沒有NuGet引用,也沒有任何NuGet引用,所需的MSBuild配置將無法正確設置,因此我們需要添加一個“虛擬”。

  • 啟用NuGet軟件包還原。

  • 編輯NuGet.targets文件,並確保BuildPackagetrue

     <!-- Property that enables building a package from a project --> <BuildPackage Condition=" '$(BuildPackage)' == '' ">true</BuildPackage> 
  • 編輯您的.csproj文件並將其添加到第一個默認PropertyGroup

     <BuildPackage>true</BuildPackage> 
  • 重建您的項目,然后在輸出中搜索nupkg並確認包文件的創建和位置。

  • 刪除虛擬的NuGet軟件包引用,然后再次構建並檢查輸出。

  • 若要進一步自定義程序包的創建,可以將MyProjectName.nuspec文件粘貼在.csproj文件旁邊。

有關NuSpec格式的更多信息,請參見http://docs.nuget.org/docs/reference/nuspec-reference 您還可以從現有軟件包(僅是一個zip文件)中提取一個文件,並仔細看看它是如何完成的。

添加這樣的構建后事件:

$(SolutionDir)\.nuget\nuget.exe pack "$(MSBuildProjectFullPath)" -p Configuration=Release -o "$(MSBuildProjectDirectory)\bin\Release" -symbols"

然后下載nuget.exe.nuget解決方案文件旁邊的.nuget文件夾中。

您可以使用nuget update -self保持.exe的nuget update -self

注意

nuget.exe pack當前存在一個錯誤,在該錯誤中它將看到一個packages.config文件,並嘗試查找您的解決方案中提到的軟件包,但是如果packages文件夾位於一個陌生的地方(例如,如果您的解決方案),則無法找到它們文件不是項目的上一級。

要解決此問題,請添加另一個構建后事件,以將packages文件夾復制到項目文件夾中。

repositorypath配置設置似乎對我無濟於事。

查看GitHub報告:

https://github.com/NuGet/Home/issues/5316


真有趣 當我采用這種新方法時,我在自動構建構建包的慣常方法上遇到了問題。 因此,當我在這里遇到自己的問題時,我正在尋找一個合適的SO問題來回答我的新的構建后方法!

暫無
暫無

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

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