在以下场景中遇到 TFS 和 TFS CI 问题(我已经简化了它,尽管它本质上是相同的问题):
- 我有一个主干(一个 VS 解决方案中的一组 csprojs)
- 我有一个分支(取自主干)——在这个分支中我创建了一个新文件,比如“MyRepository.cs”
- 我将我的分支合并回主干 - 一切似乎都很好......(在待处理的更改中,文件被标记为“合并,分支”)
- 我将合并的待处理更改签入到主干
- 这将启动 TFS 中的门控签入
- 这失败了,我从 TFS CI 收到一条消息:
“CSC:找不到源文件 'Repositories\MyRepository.cs'”
“TF270015:‘MSBuild.exe’返回了意外的退出代码。预期为‘0’;实际为‘1’。”
当我签入 MyRepository.cs 文件时,我显然签入了包含 MyRepository.cs 的程序集的 csproj 文件。这个 csproj 具有包含新 cs 文件的行,即:
<Compile Include="Repositories\MyRepository.cs" />
所以问题是我不明白为什么 TFS 抱怨 .cs 文件不存在,即使我正在检查它并且它包含在 csproj 文件中。
我怀疑我从分支合并到主干这一事实导致了问题,但我不知道为什么。我对 TFS CI 比较陌生,所以任何关于现在看哪里的指针都会有很大帮助。
更新- 此后发现 TFS CI 使用的源文件的工作目录没有将 MyRepository.cs 文件拉入其中,也没有拉入 .csproj 文件的最新(签入集)版本(看起来像它的旧主干版本仍然)。这似乎很奇怪,因为错误消息(上图)暗示它获取了 .csproj 但没有获取 MyRepository.cs 文件。