2017-08-11 41 views
1

我剛開始嘗試使用Visual Studio Team Services來配置CI/CD進程,以便進行門控簽入過程,然後該進程會自動打包並將輸出推送到私人NuGet Feed。我成功地通過在構建定義本身存在的,但是我的包任務失敗在這個階段,「獲取源」任務獲得:如何使用Visual Studio Team Services更正CI/CD NuGet包構建的輸出目錄?

d:\a\_tool\NuGet\4.0.0\x64\nuget.exe pack 
d:\a\1\s\Core\Core\Core.csproj -NonInteractive - 
OutputDirectory d:\a\1\a -Properties Configuration=$Release;OutDir=$(OutDir) 
-Symbols -version 1.0.0-CI-20170811-095629 -Verbosity Detailed 
NuGet Version: 4.0.0.2283 
Attempting to build package from 'Core.csproj'. 
MSBuild auto-detection: using msbuild version '14.0' from 'C:\Program Files (x86)\MSBuild\14.0\bin\amd64'. Use option -MSBuildVersion to force nuget to use a specific version of MSBuild. 
NuGet.CommandLine.CommandLineException: Unable to find 'd:\a\1\s\Core\Core\$(OutDir)\Core.dll'. Make sure the project has been built. 

從本質上講,日誌二號線表明,我的項目文件在d:\a\1\s,但輸出是針對d\a\1\a - 不一樣的地方。 NuGet打包我的文件的指令然後在正確的位置(d:\a\1\s)中查找,但該文件不在此處。

我知道我可以在構建定義中指定一個包文件夾,但是我沒有從默認值($(Build.ArtifactStagingDirectory))中更改它 - 我希望這可以在本機上工作,但由於我無法解釋的原因,它不是。

是否有一個令牌或通配符,我可以提供一個額外的生成屬性,將糾正這?我已經在這裏接受了第一個發佈的答案的指導,並將$(Build.ArtifactStagingDirectory)更改爲$(Build.Repository.LocalPath),這讓我更接近目標,因爲現在的錯誤讀數爲-OutputDirectory d:\a\1\s\... - 我試過手動將各種合理的路徑放在這裏,但錯誤仍然存​​在。

+0

你用我的方式解決了這個問題嗎? –

+0

@ starain-MSFT不,我恐怕在嘗試在CI/CD工作流程中創建軟件包時無法解決此問題。如果我使用NuPack NuGet包在解決方案中構建包並簡單地發佈包,它可以正常工作,但這不是我想要實現的。問題仍未解答 – Ashilta

+0

您能否提供簡單的示例/步驟來解釋要求? –

回答

0

請參閱this文章。它具有TFS/VSTS環境的構建變量。

$(Build.ArtifactStagingDirectory)本身是指\ 1 \ a文件夾。您可能想嘗試$(Build.Repository.LocalPath)變量。

不是100%,但它可以工作,但不妨試試。

+1

沒有快樂,但謝謝你的嘗試! – Ashilta

+0

您的構建過程的輸出是否也設置爲'$(Build.Repository.LocalPath)'?您可能需要這樣做。 – BikerDude

+0

我沒有能力在我的任務列表中定義MSBuild事件的輸出位置 - 我在這裏可能錯過了什麼嗎? – Ashilta

0

該問題與OutDir=$(OutDir)有關,而不是OutputDirectory

輸出目錄指定在其中創建包存儲在文件夾和OUTDIR指定構建輸出,但該項目之前需要的NuGet包任務要建,所以你需要添加的Visual Studio構建任務或相關構建項目。

您可以離開其他構建屬性框空白使用默認輸出到配置,因爲您只需知道將包推送到遠程供稿的包存儲路徑。

如果您想更改構建輸出,您可以指定/p:OutDir msbuild參數來更改構建輸出位置。例如:

  1. 的Visual Studio生成任務(MSBuild的參數:/p:OutDir=$(Build.ArtifactStagingDirectory))
  2. 的NuGet包任務(附加生成屬性:OUTDIR = $(Build.ArtifactStagingDirectory))

順便說一句,要更改包存儲的位置,您需要指定OutputDirectory。

相關問題