TFS 构建定义中的 MatchPattern 导致 MSBUILD:错误 MSB1008:只能指定一个项目

MatchPattern in TFS build definition causing MSBUILD : error MSB1008: Only one project can be specified

我目前正在更新 TFS 中的构建定义,我需要在我们的解决方案中找到需要构建的项目。这是通过将文件添加到项目并将其用作标志来完成的。目前,这样做是这样的:

<mtbwa:FindMatchingFiles 
       DisplayName="Find ClickOnce Projects" 
       sap2010:WorkflowViewState.IdRef="FindMatchingFiles_2" 
       MatchPattern="[String.Format(&quot;{0}\**\ProjectToBuild.txt&quot;, Path.GetDirectoryName(localProject))]" 
       Result="[ClickOnceFlags]" />

我们在不同的项目中有不同的标志,不同的构建有不同的构建模板文件。我想从 MatchPattern 属性 中删除 "ProjectToBuild.txt" 并添加一个名为 FlagName 的变量,该变量在定义构建定义时设置。这样,我们对多个构建定义使用相同的构建模板文件。

这是结果:

<mtbwa:FindMatchingFiles 
       DisplayName="Find ClickOnce Projects" 
       sap2010:WorkflowViewState.IdRef="FindMatchingFiles_2" 
       MatchPattern="[String.Format(&quot;{0}\**\{1}&quot;, Path.GetDirectoryName(localProject), FlagFileName)]" 
       Result="[ClickOnceFlags]" />

我将字符串格式的文件名更改为 {1},并在构建模板文件中添加了一个名为 FlagFileName 的变量。

<x:Property Name="FlagFileName" Type="InArgument(x:String)" />

为了对此进行测试,我只是将 FlagFileName 变量设置为 "ProjectToBuild.txt",并尝试 运行 构建,期望得到与之前相同的结果。但是它无法完成构建,引用

MSBUILD : error MSB1008: Only one project can be specified.

任何人都可以告诉我这里出了什么问题吗?

我们最终修复了错误,但它与上述命令没有任何关系,它与我们在构建过程中使用的程序之一有关,当 运行 作为测试版本。

更准确地说,我们试图测试一种使用我们构建的定制程序的部署方法。我们没有检查那个程序,它实际上使用那个标志来确定程序版本(这只是在使用测试版本时出现的问题)。这导致了一个不一致的版本,从而导致了链条更下游的问题。