TeamCity - MSBuild无法构建,因为创建了名为“bin”的文件而不是bin目录

时间:2013-11-19 10:47:48

标签: visual-studio-2012 msbuild continuous-integration teamcity

我的TeamCity上的.NET项目有问题。一切正常,但有时MSBuild无法构建,因为在项目文件夹而不是bin目录中创建了名为“bin”的文件。我尝试删除“bin”文件并重新运行配置然后它工作正常,但有时当TeamCity执行干净检查并重建解决方案时,问题再次发生:已创建名为“bin”的文件,以便MSBuild无法创建bin目录并将输出文件复制到该目录。

以下是从构建日志中提取的一些文本:

[MyWebProject.csproj] PrepareForBuilBd
[21:06:46][PrepareForBuild] MakeDir
[21:06:46][MakeDir] Creating directory "bin\".
[21:06:46][MakeDir] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(932, 5): warning MSB3191: Unable to create directory "bin\". Cannot create "E:\TeamCity\VCS\MyWebProject\MyWebProject\bin" because a file or directory with the same name already exists.
[21:06:46][MakeDir] The previous error was converted to a warning because the task was called with ContinueOnError=true.
[21:06:46][MakeDir] Creating directory "Help\".
[21:06:46][MakeDir] Build continuing because "ContinueOnError" on the task "MakeDir" is set to "True".

3 个答案:

答案 0 :(得分:1)

我的源代码没有bin文件。

有人在我身上遇到同样的问题,并且在项目中设置了Post-Build事件时会发生错误,因为TeamCity没有在预期的订单中构建依赖项目,请参阅此内容http://social.msdn.microsoft.com/Forums/vstudio/en-US/46685782-ec0b-4df0-9132-88ef7e355600/msbuild-with-webapplication-error-msb3191-unable-to-create-directory-bin?forum=msbuild

我不想删除Post-build事件,因此我找到了解决方法:只需将bin文件夹包含到CVS中,但不包含内部输出文件。因此,当TeamCity调用CVS更新源代码时,bin文件夹已经创建,因此它不会创建bin文件。我知道将bin目录包含到CVS(即使只是文件夹,而不是内部文件)也是不好的做法,但它现在适用于我的问题。我还向TeamCity社区http://devnet.jetbrains.com/thread/451001发布了一个问题,等待TeamCity修复错误。但是在这段时间里,我的工作对我有用。

答案 1 :(得分:0)

听起来您的源代码管理中有一个bin文件会被teamcity检出,这就是您遇到问题的原因。

否则,您可以添加一个新的构建步骤,该步骤在结帐后直接发生,将删除文件夹,如:

DEL /Q bin

那只会删除它,然后构建可以继续。

答案 2 :(得分:0)

威尔士,在结帐步骤之后立即设置另一个构建步骤以删除bin文件也是一个很好的解决方法。将尝试,谢谢威尔士。