TFS构建定义和相对工作空间路径

时间:2012-01-04 02:22:53

标签: msbuild tfs2010

假设TFS 2010中有这个文件夹结构

Main
    Collection_A
        Solution_A1
        Solution_A2
        Reference Assemblies
    Collection_B
        Solution_B1
            Project_B1A

Project_B1A使用相对路径(Reference Assemblies)引用Collection_A ..\..\..\Collection_A\Reference Assemblies\Whatever.dll中的dll。在TFS中定义构建定义时,我们在“工作流”选项卡中遇到了问题。

Project_B1A => $(SourceDir)
参考装配

应该是

Reference Assemblies => $(SourceDir)\..\..\..\Collection_A\Reference Assemblies

然后TFS抛出错误

TF215083: The local path $(SourceDir)\..\..\Collection_A\Reference Assemblies for a 
workspace mapping is not valid. (Detail Message: TF10202: The path '..' ends with a 
character which is not allowed. Characters which are not allowed include '.' and ' '.)

我们尝试了$(SourceDir)\Collection_A\Reference Assemblies$(BuildDir)\Collection_A\Reference Assemblies,但正如预期的那样,没有效果。还有其他可以使用的变量吗?

1 个答案:

答案 0 :(得分:7)

正如错误消息所示,我不认为在定义工作文件夹映射时允许使用相对路径。

您应该做的是从要映射的所有可能路径的最常见路径开始映射(在本例中,它是Main)。所以$(SourceDir)应该映射到Main。但是,您应该仅映射Main的顶级(通过使用星号作为Main / *)。这意味着您不希望以递归方式映射Main。然后在其他映射中指定Main的特定子文件夹。

看起来像是:

$/Main/* -> $(SourceDir)
$/Main/Collection_A/Reference Assemblies -> $(SourceDir)\Collection_A\Reference Assemblies
$/Main/Collection_B/Solution_B1/Project_B1A -> $(SourceDir)Collection_B\Solution_B1\Project_B1A

或者,如果您不希望映射的路径数小于要在根路径下映射的路径数,则可以递归地映射根路径,但是可以选择性地隐藏那些不是需要。

希望这有帮助。