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

ami*_*t_g 5 msbuild tfs2010

假设TFS 2010中有此文件夹结构

Main
    Collection_A
        Solution_A1
        Solution_A2
        Reference Assemblies
    Collection_B
        Solution_B1
            Project_B1A
Run Code Online (Sandbox Code Playgroud)

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

Project_B1A => $(SourceDir)
Run Code Online (Sandbox Code Playgroud)

对于参考装配应该是

Reference Assemblies => $(SourceDir)\..\..\..\Collection_A\Reference Assemblies
Run Code Online (Sandbox Code Playgroud)

但是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 ' '.)
Run Code Online (Sandbox Code Playgroud)

我们已经尝试过$(SourceDir)\Collection_A\Reference Assemblies,$(BuildDir)\Collection_A\Reference Assemblies但正如预期的那样没有成功 还有其他可以使用的变量吗?

Dua*_* Le 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
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助.

  • 同意:+1.一个注意事项,我不会设置你的第一行`$/Main/* - > $(SourceDir)` - 只是以下两个,因为这第一行会导致下载$ $/Main /`下的所有内容.设置后两者应该按照需要工作. (4认同)