Visual Studio Team Services - 未找到发布工件 PathtoPublish

Visual Studio Team Services - Publish artifact not found PathtoPublish

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

这在过去几个月一直有效。但是今天它开始失败,web.config 文件出现错误 "not found PathtoPublish"。在 Publish Artifacts 任务中,我将 Path to publish setup 设置为

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

看起来现在它期望的路径类似于

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

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

您可能更新了构建定义并且任务在您没有注意到的情况下更新到最新版本(查看任务历史记录中的版本号)。
我不知道您要查找哪个变量,但 $(BuildConfiguration) 会给您路径的 "Release" 或 "Debug" 部分。
$(build.stagingDirectory) 会给你文件在被收集为工件之前被复制的路径。
然后最小匹配模式也可能是类似 **\Web.Config
的选项 祝你好运。

这可能是由 baywet 提到的构建定义更改引起的,尤其是 "Repository" 选项卡下的 "Mappings" 部分。

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

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

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