首先,如果我通过命令行使用MSBuild构建这个项目,它可以完美地运行。
我能够确定的是,为源参数生成的contentPath
正在绊倒TFS。
<Target Name="DeployRemote">
<Exec WorkingDirectory="$(MSDeployPath)"
Command="msdeploy.exe -verb:sync -
source:contentPath="$(MSBuildProjectDirectory)\bin\Debug\"...
</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 ..
答案 0 :(得分:2)
@The Muffin Man
如果这是你的真名,这就是原因。
TFS将内容输出到公共bin目录中,除了您的网站之外,所有文件都将被转储到该目录中。哪个应该在_PLublishedWebsites之类的目录中。
您需要配置TFS构建工作流以将项目转储到单独的构建目录中。我相信使用较新版本的TFS会更容易,但是需要您打开并编辑用于构建软件的TFS工作流程。
这是TFS Build的一个令人沮丧的方面,因为您需要签入TFS工作流并运行它以验证是否已解决问题。
我发现了这个
在TFS 2012 / .net 4.5中,您可以通过在构建定义中传递msbuild参数来控制此行为/ p:GenerateProjectSpecificOutputFolder = true
虽然我喜欢TFS的整个概念,但我认为其他更成熟的构建服务器(TEamCity,Go.cd,Jenkins)在这方面真的很完美,因为它们只使用MSBUILD。因此,它非常容易测试和调整,因为构建服务器上的结果与单个开发人员计算机上的结果相同。 /咆哮。