合并回主干时,TFS失败的gated checkin

时间:2012-11-30 17:10:44

标签: visual-studio-2010 tfs msbuild tfs2010

在以下场景中遇到TFS和TFS CI问题(我已经简化了它,虽然它基本上是同一个问题):

  1. 我有一个主干(一个VS解决方案中的csprojs集)
  2. 我有一个分支(取自后备箱) - 在这个分支中,我创建了一个新文件,比如“MyRepository.cs”
  3. 我将我的分支合并回主干 - 一切似乎都很好......(在挂起的更改中,文件被标记为“merge,branch”)
  4. 我检查合并的挂起更改为trunk
  5. 这将启动TFS中的门禁登记
  6. 此操作失败,我收到来自TFS CI的消息:
  7. “CSC:无法找到源文件'Repositories \ MyRepository.cs'”

    “TF270015:'MSBuild.exe'返回了意外的退出代码。预期为'0';实际为'1'。”

    当我检查MyRepository.cs文件时,我显然在csproj文件中检查了包含MyRepository.cs的程序集。这个csproj有一行包含新的cs文件,即:

    <Compile Include="Repositories\MyRepository.cs" />
    

    所以问题是我不明白为什么TFS抱怨.cs文件不存在,即使我正在检查它并且它包含在csproj文件中。

    我怀疑我从分支机构合并到主干的事实导致问题,但我不知道为什么。我对TFS CI比较陌生,所以任何关于现在看哪里的指针都会有很大的帮助。

    UPDATE - 从那时起发现TFS CI使用的源文件的工作目录没有将MyRepository.cs文件拉入其中,并且没有提取最新的(签入集)版本的.csproj文件(看起来仍然是它的旧主干版本)。这似乎很奇怪,因为错误消息(上面)暗示它获取.csproj但没有获取MyRepository.cs文件。

2 个答案:

答案 0 :(得分:1)

事实证明这是因为TFS构建代理使用的帐户没有对分支(或任何其他权限)的检索权限。所以我更新的文件和从分支合并到trunk的新文件没有出现在trunk构建中。有点恼人,TFS没有明确地抱怨这个,而是只是去了一个头并使用旧的主干文件(或者如果它确实抱怨我在日志中找不到它。)

摘要:在分支上授予构建代理帐户权限可以解决问题。

答案 1 :(得分:0)

好吧,错误表明csproj文件确实对其进行了更改,因为编译正在查找该文件。但是,它还表示实际的cs文件不是签入的一部分,或者它被签入的位置不同于csproj文件所期望的位置。另一个可能的解决方案(如果您已经验证了其他两个)是,您的构建工作区不会有包含Repositories文件夹的映射。