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("{0}\**\ProjectToBuild.txt", Path.GetDirectoryName(localProject))]"
Result="[ClickOnceFlags]" />
我们在不同的项目中有不同的标志,不同的构建有不同的构建模板文件。我想从 MatchPattern 属性 中删除 "ProjectToBuild.txt" 并添加一个名为 FlagName 的变量,该变量在定义构建定义时设置。这样,我们对多个构建定义使用相同的构建模板文件。
这是结果:
<mtbwa:FindMatchingFiles
DisplayName="Find ClickOnce Projects"
sap2010:WorkflowViewState.IdRef="FindMatchingFiles_2"
MatchPattern="[String.Format("{0}\**\{1}", 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.
任何人都可以告诉我这里出了什么问题吗?
我们最终修复了错误,但它与上述命令没有任何关系,它与我们在构建过程中使用的程序之一有关,当 运行 作为测试版本。
更准确地说,我们试图测试一种使用我们构建的定制程序的部署方法。我们没有检查那个程序,它实际上使用那个标志来确定程序版本(这只是在使用测试版本时出现的问题)。这导致了一个不一致的版本,从而导致了链条更下游的问题。
我目前正在更新 TFS 中的构建定义,我需要在我们的解决方案中找到需要构建的项目。这是通过将文件添加到项目并将其用作标志来完成的。目前,这样做是这样的:
<mtbwa:FindMatchingFiles
DisplayName="Find ClickOnce Projects"
sap2010:WorkflowViewState.IdRef="FindMatchingFiles_2"
MatchPattern="[String.Format("{0}\**\ProjectToBuild.txt", Path.GetDirectoryName(localProject))]"
Result="[ClickOnceFlags]" />
我们在不同的项目中有不同的标志,不同的构建有不同的构建模板文件。我想从 MatchPattern 属性 中删除 "ProjectToBuild.txt" 并添加一个名为 FlagName 的变量,该变量在定义构建定义时设置。这样,我们对多个构建定义使用相同的构建模板文件。
这是结果:
<mtbwa:FindMatchingFiles
DisplayName="Find ClickOnce Projects"
sap2010:WorkflowViewState.IdRef="FindMatchingFiles_2"
MatchPattern="[String.Format("{0}\**\{1}", 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.
任何人都可以告诉我这里出了什么问题吗?
我们最终修复了错误,但它与上述命令没有任何关系,它与我们在构建过程中使用的程序之一有关,当 运行 作为测试版本。
更准确地说,我们试图测试一种使用我们构建的定制程序的部署方法。我们没有检查那个程序,它实际上使用那个标志来确定程序版本(这只是在使用测试版本时出现的问题)。这导致了一个不一致的版本,从而导致了链条更下游的问题。