2015-11-25 96 views
1

我在Visual Studio 2015中有大約40個項目的解決方案。其中一些項目有一些NuGet包引用。將NuGet包安裝到Project Dirs而不是解決方案目錄中?

由於我們的分支策略(每個項目文件夾分別單獨分支)和我們的安全需求(NuGet二進制文件實際檢入到TFS)的組合,我希望每個項目的NuGet軟件包安裝到每個項目的文件夾,不在解決方案的文件夾中。空間使用不在這裏。

我看: https://docs.nuget.org/consume/nuget-config-file https://docs.nuget.org/Release-Notes/NuGet-2.1#Specify-packages-Folder-Location

而且他們已經幫助我的配置文件是如何工作的理解......但我似乎無法得到它做我想做的。

我已經在我的配置文件試過這樣:

<configuration> 
    <config> 
    <add key="repositoryPath" value="$(ProjectDir)\Nuget\" /> 
    </config> 
</configuration> 

但它會在解決方案文件夾的文件夾實際上是所謂「$(PROJECTDIR)」。

而且我無法硬編碼到項目文件夾的路徑(即NuGet文檔中的'C:\ myteam \ teampackages'),因爲團隊中的每個人都有不同的路徑到他們的本地工作區!

我該怎麼做?

+0

難道這不會導致不同項目在一起構建不同版本的軟件包?我們一直試圖避免這種情況,並要求給定基準中的所有項目都必須就要使用的外部資產版本達成一致。 –

+0

有可能......但這不是我們關心的問題,而是滿足分支和安全要求! – GoldieLocks

+0

我不明白這種擔心可能會是次要的。我沒有推薦你的場景,所以祝你好運。 –

回答

0

Nuget docs提到指定包文件夾的位置是讓許多不同的解決方案共享相同的包。這與你的情況相反。版本庫路徑設置僅允許您將NuGet軟件包安裝在指定的文件夾(如C:\ teampackages)或相對路徑(如../Nuget)中。

要在不同的repositoryPath安裝包,你可以嘗試:

<configuration> 
    <config> 
     <add key="repositoryPath" value="../Nuget" /> 
    </config> 
</configuration> 

檢查情況:Is it possible to change the location of packages for NuGet?

+0

這與我所要求的完全相反,不是嗎? – GoldieLocks

+0

是的,相對路徑只相對於解決方案文件夾。版本庫路徑設置僅允許您將NuGet軟件包安裝在指定的文件夾(如C:\ teampackages)或相對路徑(如../Nuget)中。 –

0

首先,你不應該支票的NuGet包到TFS版本控制。作爲使用NuGet的好處之一是,您可以使用它來避免在您的版本控制系統中檢查二進制文件。

取而代之,您需要恢復在TFS構建過程中的NuGet包,並且將下載所需的包。在VS2015中,您需要按照以下博客中的步驟操作:https://docs.nuget.org/consume/package-restore/team-build)。

一些關鍵的步驟是:(假設你正在使用XAML構建工作):

  1. 添加下列項目的解決方案。 (該nuget.config和.tfignore文件的內容可以發現here

enter image description here

  • 添加一個build.proj文件溶液的根路徑下夾。 (構建的內容。凸出的文件可以發現here

  • 解決方案文件夾的根路徑下創建一個文件夾命名爲工具。創建NuGet子目錄下的工具文件夾,下載並保存nuget.exe下的tools \ NuGet路徑。

  • 入住nuget.config.tfignorebuild.proj工具\的NuGet \ nuget.exe到TFS版本控制。

  • 修改構建定義以選擇構建build.proj文件。 enter image description here
  • 然後,您將在TFS構建過程中成功恢復NuGet包。

    相關問題