【问题标题】:TF270003: Failed to copyTF270003: 复制失败
【发布时间】:2014-09-01 07:36:45
【问题描述】:

这涉及到:

  • Visual Studio 2013
  • 团队基础服务器 2010

错误:

TF270003:复制失败。确保源目录 \\TFSFileStore\TFSBuild\Xxx\Yyy\_PublishedWebsites\Zzz 存在并且您具有适当的权限。

_PublishedWebsites 不存在。问题是它不是由 MSBuild 创建的。即使我要手动创建这些文件夹,文件也不会被复制到那里。

我们刚刚从 Visual Studio 2010 升级到 2013。


仔细阅读日志文件后,似乎使用了错误的 MSBuild。它正在使用:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe

什么时候应该使用:

C:\Program Files (x86)\MSBuild\12.0\Bin\amd64\MSBuild.exe

关于如何让 TFS 使用正确的 MSBuild 可执行文件有什么想法吗?


我关注了http://hamidshahid.blogspot.com/2013/10/building-visual-studio-2013-solutions.html

1) 查找 MSBuild 活动的所有实例。该活动在构建模板中被命名为“Run MSBuild for Project”,如下所示:

2) 修改activity的ToolsPath指向MSBuild 12.0 exe文件,如下图:

但是 ... 诊断模式下的日志显示 Run MSBuild for Project 的以下内容:

Initial Property Values
    AdditionalVCOverrides = 
    CommandLineArguments = /p:SkipInvalidConfigurations=true /tv:12.0
    Configuration = Release
    GenerateVSPropsFile = True
    LogFile = 
    LogFileDropLocation = \\Xxx\Yyy\Zzz\logs
    MaxProcesses = 1
    OutDir = E:\Builds\Xxx\Binaries
    Platform = Any CPU
    Project = E:\Builds\Xxx\Xxx.sln
    ResponseFile = 
    RunCodeAnalysis = AsConfigured
    Targets = 
    TargetsNotLogged = String[] Array
    ToolPath = 
    ToolPlatform = X86
    Verbosity = Diagnostic

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 

不知何故,我设置的 ToolPath 属性:

C:\Program Files (x86)\MSBuild\12.0\Bin\amd64\

被覆盖并设置为空。

【问题讨论】:

  • 您是否验证了执行 msbuild 的用户实际上拥有该目录的权限?一般来说,这是第一大原因。好吧,除了没有足够的磁盘空间之外。
  • 是的,我有。另外,它会在构建过程中创建Xxx\Yyy 文件夹。你会认为如果这是一个烫发问题,它会在这个过程的早期失败。此外,它在 VS2010 下的过去一年中运行良好。我们所做的只是升级到 VS2013。一定有一些.csprojMicrosoft.WebApplication.targets 行丢失或错误;我的想法就是这样。
  • 您是否在构建服务器上安装了Build Tools 2013
  • @KMoraz - 我在构建服务器上安装了 VS2013,我认为它可以解决这个问题。

标签: tfs msbuild visual-studio-2013


【解决方案1】:

如果您的构建过程模板来自早期版本的 TFS,您可能需要编辑您的模板并修改 MSBuild 活动属性。

如果您的构建服务器正在运行:

Visual Studio Team Foundation Server 2013:将 MSBuild 活动 ToolVersion 属性设置为 12.0

Visual Studio Team Foundation Server 2012:将 MSBuild ToolPath 属性设置为 MSBuild 12 的路径。在许多情况下,此路径为 C:\Program Files (x86)\MSBuild\12.0\Bin\ (32 -bit) 或 C:\Program Files (x86)\MSBuild\12.0\Bin\amd64(64 位)。您还必须在构建代理上安装 Visual Studio 2013。

MSDN Source

【讨论】:

  • 我们正在使用 TFS2010。我在构建定义的 Process 部分中没有看到 MSBuild ToolVersion 属性。在 MSBuild Arguments 属性上,我执行了/tv:12.0,它仍然在C:\Windows\Microsoft.NET\Framework\v4.0.30319 目录之外运行MSBuild.exe
  • MSBUILD 平台属性设置也是什么?
  • Microsoft.TeamFoundation.Build.Workflow.Activities.ToolPlatform.Auto,然后诊断模式下的日志显示X86
  • 我用更多的故障排除更新了这个问题
  • 在构建过程中的什么时候出现错误? "TF270003: 复制失败。请确保源目录 \\TFSFileStore\TFSBuild\Xxx\Yyy_PublishedWebsites\Zzz 存在并且您具有适当的权限。"
【解决方案2】:

在我的构建定义中,我最终创建了一个 Sequence 变量,我将其命名为 MSBuildToolPath 并将其值设置为 C:\Program Files (x86)\MSBuild\12.0\Bin .

仍然在我的构建定义中,从那里我找到了每个 Run MSBuild for Project 活动并将它们的 ToolPath 属性设置为上述 MSBuildToolPath strong> 变量。

MSBuild 终于使用了正确的版本。

然而,我的快乐并没有持续多久,因为下一个问题是 MSBuild 找不到 *.metaproj 文件。

经过一番研究,我们发现我们可以创建一个MSBUILDEMITSOLUTION环境系统变量并将其值设置为1强制创建该文件。

完成后,我们成功构建了 _PublishedWebsites\Zzz 文件夹并部署到我们的网络服务器...终于!

【讨论】:

    【解决方案3】:

    当您对新构建进行排队时,请在“参数”选项卡下设置私有放置位置

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-10
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 2019-02-16
      • 2018-04-18
      • 2016-07-11
      • 2013-04-29
      相关资源
      最近更新 更多