我想配置一個具有NuGet程序包引用的項目的自動構建,但我沒有任何運氣。 (僅供參考,我仍然在所有這些耳朵後面都很溼,所以請提供簡單的步驟和/或配置。)TFS NuGet安裝程序構建步驟不起作用
注意:這不是其他類似問題的重複,因爲我使用一箇中央軟件包庫。其他類似的問題沒有提到這個重要的細節,所以應該假定它們不相關。
構建運行良好,沒有參考。我加入Newtonsoft.Json
並綁定到它通過包括這種簡單的結構:
Dim eHandling As Newtonsoft.Json.ConstructorHandling
eHandling = Newtonsoft.Json.ConstructorHandling.Default
我檢查並構建開始,但的NuGet沒有先複製裝配到我的應用程序的文件夾bin
。但是,它確實將其複製到這裏:
Restoring NuGet package Newtonsoft.Json.9.0.1.
Adding package 'Newtonsoft.Json.9.0.1' to folder 'C:\Agent\_work\1\s\packages'
自然,構建失敗,因爲它無法找到依賴關係。
值得一提的是,我用我的開發機器上的中央包庫:
<config>
<add key="repositoryPath" value="D:\Dev\Packages" />
</config>
我想效仿服務器上的此行爲爲好,例如C:\Packages\*\*.nupkg
。
我嘗試使用標準%AppData%\NuGet\NuGet.config
文件,但構建忽略它。我嘗試了this answer中的建議(使用repositoryPath
而不是packageSources
,如圖所示),但這會導致服務器掛起,直到我重新啓動VSO代理服務。考慮到這可能是一個權限問題,我重新配置代理以在位置NuGet.config
的位置關聯的用戶帳戶下運行。仍然沒有運氣。沒有建立。
如何讓NuGet在運行構建步驟之前下載並填充服務器上的中央軟件包存儲庫,然後將相應的依賴項複製到應用程序bin
文件夾中?
編輯1
更新:顯然東西的工作,因爲我現在已經在服務器上C:\Packages\Newtonsoft.Json.9.0.1
文件夾。但是,在構建之前,程序集仍然不會被複制到應用程序bin
文件夾中。同樣的結果。構建失敗。
EDIT 2
OK,我越來越近。我在服務器上創建了D:驅動器,並將本地repositoryPath
的值設置爲D:\Dev\Packages
,與我的開發機器上的值相同。構建仍然失敗,但快速瀏覽項目XML揭示了這一點:
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\..\..\Packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
如何處理相對路徑?這應該解決它,是嗎?
編輯3
OK,那工作。我編輯了項目並將HintPath
更改爲
D:\Dev\Packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll
我現在已經成功構建。
但是,這會變得真正枯燥乏味。當然,我不會爲每個單個項目中的每一個NuGet參考都做這件事,過去的現在和將來...我是嗎?