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

时间:2016-12-02 08:44:04

标签: tfs msbuild tfsbuild

我目前正在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.

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

1 个答案:

答案 0 :(得分:0)

我们最终修复了错误,但它与上面的命令没有任何关系,它与我们在构建过程中使用的其中一个程序有关,因为它在运行时作为测试没有响应建立。

更确切地说,我们试图测试使用我们构建的定制程序的部署方法。我们没有检查过该程序,它实际上使用了该标志来确定程序版本(这只是使用测试版本时的一个问题)。这导致了一个不一致的版本,这导致了链条的进一步问题。