簡體   English   中英

使用git子模塊時NuGet自動包恢復

[英]NuGet Automatic Package Restore when using git submodules

我試圖了解在引用Github上托管的庫時是否有任何方法可以依賴Nuget自動包恢復。 問題是當我添加某個庫作為子模塊時,它有自己的/ packages /目錄。 但是,當我從該庫中添加csproj到我的解決方案,因為該子模塊的/ packages /目錄中沒有DLL,構建失敗。

顯然,在我的機器上輕松修復是從我引用的子模塊中打開.sln文件,進行構建。 現在,從我的主解決方案構建顯然將起作用,因為填充了子模塊中的/ packages /文件夾。 但是,這不是我在構建服務器上可以做的事情。

有什么方法可以解決這個問題,而不會完全弄亂子模塊? 我顯然也不想更改子模塊.csproj,因為這會使它與origin不同步。 理想情況下,如果我能指示nuget在其自己的/ packages /目錄中提取引用的子模塊.csproj的包,我會很高興。

有兩種類型的自動包恢復。 在Visual Studio中構建解決方案時觸發的一個,以及基於MSBuild的解決方案,需要修改項目以在構建過程中運行NuGet.exe還原。 通過選擇Enable NuGet Package Restore啟用基於MSBuild的還原,但NuGet團隊已棄用此功能。

對於構建服務器,您需要執行以下任一操作:

  1. 在運行構建之前,對所有解決方案運行NuGet.exe restore
  2. 在構建主要解決方案時,讓MSBuild恢復NuGet包。

要使用MSBuild恢復NuGet包,您可以使用基於棄用的基於MSBuild的NuGet包還原,或者更好的是創建一個Before.YourSolution.sln.targets文件,如Ultimate Cross Platform NuGet Restore帖子中所述。 自定義Before ....目標文件需要恢復子模塊的包。

如果您使用基於MSBuild的還原,那么其中一個好處是,在構建解決方案之前,沒有人需要運行的預構建步驟,因為構建解決方案會執行還原。 基於MSBuild的程序包還原的問題之一,至少是在Visual Studio中選擇“啟用NuGet程序包還原”時啟用的問題,是它可能導致使用自己的自定義MSBuild .targets文件的NuGet程序包出現問題。

暫無
暫無

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

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