TFS Build在MSDeploy任务中找不到bin / Debug文件夹

时间:2014-04-24 04:29:11

标签: tfsbuild msdeploy msbuild-4.0

首先,如果我通过命令行使用MSBuild构建这个项目,它可以完美地运行。

我能够确定的是,为源参数生成的contentPath正在绊倒TFS。

<Target Name="DeployRemote">
<Exec WorkingDirectory="$(MSDeployPath)" 
      Command="msdeploy.exe -verb:sync -      
      source:contentPath=&quot;$(MSBuildProjectDirectory)\bin\Debug\&quot;...
</Target>

TFS错误:

 EXEC: FileOrFolderNotFound
 EXEC: Object of type 'contentPath' and path 
       'C:\a\src\MailChecker\MailChecker\bin\Debug\' cannot be created.
 EXEC: Could not find a part of the path '\\?
       \C:\a\src\MailChecker\MailChecker\bin\Debug\'.
 EXEC: 1.

注意:此目标是在MSBuild的后期构建目标(最初在csproj文件中注释掉)中调用的。

TFS是否使用与bin \ Debug不同的输出目录?我确保我的proj文件中的输出路径是bin \ Debug ..

1 个答案:

答案 0 :(得分:2)

@The Muffin Man

如果这是你的真名,这就是原因。

TFS将内容输出到公共bin目录中,除了您的网站之外,所有文件都将被转储到该目录中。哪个应该在_PLublishedWebsites之类的目录中。

您需要配置TFS构建工作流以将项目转储到单独的构建目录中。我相信使用较新版本的TFS会更容易,但是需要您打开并编辑用于构建软件的TFS工作流程。

这是TFS Build的一个令人沮丧的方面,因为您需要签入TFS工作流并运行它以验证是否已解决问题。

我发现了这个

  

在TFS 2012 / .net 4.5中,您可以通过在构建定义中传递msbuild参数来控制此行为/ p:GenerateProjectSpecificOutputFolder = true

Stackoverflow answer

虽然我喜欢TFS的整个概念,但我认为其他更成熟的构建服务器(TEamCity,Go.cd,Jenkins)在这方面真的很完美,因为它们只使用MSBUILD。因此,它非常容易测试和调整,因为构建服务器上的结果与单个开发人员计算机上的结果相同。 /咆哮。