TFS 2015发布构建工件目录配置异常及布局需求求助
解决方案:TFS 2015发布构建工件为空或包含多余Debug目录的问题
咱们先把问题的核心原因理清楚:
你的Release配置输出路径是..\bin\,如果解决方案放在$SomeRootFolder\MySolution,那构建完成后,Release的bin文件夹其实生成在上级目录$SomeRootFolder下,而非$SomeRootFolder\MySolution内部。这就是为什么你把发布步骤根目录设为$SomeRootFolder\MySolution时,指定/bin/**会找不到内容——这个路径是在MySolution目录下找bin,根本不存在!而用**\bin**会递归搜索所有叫bin的文件夹,自然会把Debug的bin\Debug也一并包含进来。
下面给你几个可行的解决方案,按推荐程度排序:
方案1:调整发布步骤的根目录(最简单直接)
修改「发布构建工件」步骤的配置:
- 根目录:改为
$SomeRootFolder(也就是MySolution文件夹的上级目录) - 内容:设置为以下路径(去掉开头斜杠避免路径歧义):
bin/** MySolution/MySolutionApp/Web.config MySolution/MySolutionApp/Global.asax MySolution/MySolutionApp/ApplicationInsights.config - 工件名称:保持为
MySolution
这样配置后,TFS会把$SomeRootFolder下的bin文件夹,以及MySolution/MySolutionApp里的三个配置文件打包到MySolution工件中,正好符合你想要的目录布局:
MySolution\bin MySolution\Web.config MySolution\Global.asax MySolution\ApplicationInsights.config
方案2:使用相对上级路径(不修改根目录的情况)
如果不想调整根目录,可以在内容路径中用../引用上级目录的bin:
- 根目录:保持
$SomeRootFolder\MySolution - 内容:设置为:
../bin/** MySolutionApp/Web.config MySolutionApp/Global.asax MySolutionApp/ApplicationInsights.config
注意:TFS 2015的路径匹配支持../,但要确保路径拼写没有错误。
方案3:用临时Staging目录(最可控,适合复杂场景)
如果后续有更多文件需要整理,推荐先把需要的内容复制到临时目录,再发布这个目录:
- 添加一个「复制文件」步骤:
- 源文件夹:
$SomeRootFolder - 目标文件夹:
$(Build.StagingDirectory)\MySolution - 内容:
bin/** MySolution/MySolutionApp/Web.config MySolution/MySolutionApp/Global.asax MySolution/MySolutionApp/ApplicationInsights.config
- 源文件夹:
- 修改「发布构建工件」步骤:
- 根目录:
$(Build.StagingDirectory)\MySolution - 内容:
**(表示复制该目录下所有内容) - 工件名称:
MySolution
- 根目录:
这种方式能让你更清晰地控制要发布的内容,避免路径匹配的各种坑。
内容的提问来源于stack exchange,提问作者Boris Kleynbok
相关产品推荐
相关产品推荐

