簡體   English   中英

TFS NuGet安裝程序構建步驟不起作用

[英]TFS NuGet Installer build step not working

我正在嘗試配置一個具有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文件,但是內部版本將其忽略。 我嘗試了此答案中的建議(使用repositoryPath而不是那里的packageSources ),但這導致服務器掛起,直到重新啟動VSO代理服務為止。 考慮到可能是權限問題,我將代理重新配置為在與NuGet.config%AppData%位置關聯的用戶帳戶下運行。 仍然沒有運氣。 沒有構建。

如何獲取NuGet以下載並填充服務器上的中央軟件包存儲庫,然后在運行構建步驟之前將適當的依賴項復制到應用程序bin文件夾中?

編輯1

更新:顯然有些工作,因為我現在在服務器上有一個C:\\Packages\\Newtonsoft.Json.9.0.1文件夾。 但是,在生成之前,程序集仍未復制到應用程序bin文件夾中。 結果相同。 構建失敗。

編輯2

好,我越來越近了。 我在服務器上創建了一個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

好的,那行得通。 我編輯了項目,並將HintPath更改為

D:\Dev\Packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll

我現在有一個成功的構建。

但是,這將很快變得非常乏味。 當然,在過去和現在,每個項目中的每個NuGet參考都不需要這樣做...是嗎?

好的,我知道了。

只要服務器上的repositoryPath文件夾的深度與開發機器上的深度相同(相對於Build Agent放置項目文件的文件夾而言),我們就可以將其放置在所需的任何位置並保留相對的HintPath值在項目文件中。

例如,以我為例,我最終將服務器位置設置為C:\\Agent\\Build\\Packages ,以匹配開發機器上本地Git存儲庫的層次結構位置:

D:\Dev\Packages
D:\Dev\Git\app.repo\App\App.vbproj

效果很好。

編輯

需要說明的是,將程序集從package文件夾復制到application bin文件夾的操作不是NuGet操作。 這是一個MsBuild動作(即項目的程序集引用屬性中的CopyLocal設置)。

根據項目文件中指定的相對引用,失敗的原因是MsBuild找不到要復制的程序集。

因此,從技術上講,我的問題標題不正確。 NuGet安裝程序步驟一直運行良好。

暫無
暫無

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

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