【问题标题】:TeamCity - MSBuild fail to build because a file named "bin" is created instead of the bin directoryTeamCity - MSBuild 无法构建,因为创建了名为“bin”的文件而不是 bin 目录
【发布时间】:2013-11-19 10:47:47
【问题描述】:

我在 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".

【问题讨论】:

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


    【解决方案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 修复错误。但在这段时间里,我的工作对我有用。

    【讨论】:

    • 我能够在构建后事件中找到对 cmd.exe /C copy 的调用,该事件将 DLL 移动到 %ProjectDir% 中名为 Bin 的文件中。修复该调用摆脱了名为“Bin”的文件并修复了我的构建。
    【解决方案2】:

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

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

    DEL /Q bin
    

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2021-06-27
        • 1970-01-01
        • 2016-11-06
        • 2018-09-19
        • 1970-01-01
        • 1970-01-01
        • 2014-04-16
        • 2015-04-22
        • 1970-01-01
        相关资源
        最近更新 更多