2

我在 Team Services 中有一个构建定义设置,它将 web.config 文件作为附加工件发布,以便我可以在其上运行标记器任务。在我的 Visual Studio 项目中,我在 Web.Release.config 文件中设置了令牌。当构建运行时,令牌被插入到配置文件中,然后由每个环境的发布管理过程替换。

这在过去的几个月里一直有效。但是今天它开始失败,出现 web.config 文件的错误“未找到 PathtoPublish”。在 Publish Artifacts 任务中,我有将设置发布为的路径

"MyWebProject\obj\Release\Package\PackageTmp\Web.config". 

看起来现在它期待像这样的路径

"SolutionFolder\Branch\MyWebProject\obj\Release\Package\PackageTmp\Web.config".

我想我需要为路径使用一个变量。但我不知道什么是正确的变量。我需要获取转换后的 Web.config 文件,以便令牌到位。奇怪的是,旧路径对于第二个团队项目构建定义工作正常。

4

2 回答 2

3

这可能是由于baywet提到的构建定义更改引起的,尤其是“存储库”选项卡下的“映射”部分。

没有任何变量web.config直接引用文件的路径。另一种方法是:

  1. 使用“Copy and Publish Build Artifacts”任务,指定$(Build.SourcesDirectory)为“Copy Root”和**\PackageTmp\Web.config“Contents”。这将搜索web.config文件PackageTmp夹下的文件并发布它。

  2. 或者您可以/P:outputpath="$(build.artifactstagingdirectory)\Temp"在“Visual Studio Build”步骤中添加参数以将输出文件复制到$(build.artifactstagingdirectory)\Temp文件夹中,然后在“发布工件任务”步骤中,您可以输入$(build.artifactstagingdirectory)\Temp\_PublishedWebsites\YourProjectName\Web.config发布web.config文件。

于 2016-06-20T03:06:55.587 回答
2

您可能更新了构建定义,并且任务已更新到最新版本,而您却没有注意到(请查看任务历史记录中的版本号)。
我不知道您要查找哪个变量,但 $(BuildConfiguration) 会给您路径的“发布”或“调试”部分。
$(build.stagingDirectory) 将为您提供文件在被收集为工件之前被复制的路径。
然后 minimatch 模式也可能是一个选项,比如 **\Web.Config
祝你好运修复它。

于 2016-06-18T19:54:24.070 回答