2017-08-11 46 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。

相关问题