2

我目前正在将我的项目代码转移到使用新的Team Foundation Service。我正在尝试设置门控构建以在我签入新代码时运行(并在解决方案中运行单元测试),但每次在 TFS 中构建时我都会遇到相同的错误。

这是我不断收到的错误: 我的 MSBuild 错误

这是处理此问题的诊断日志的一部分:错误日志

我已经对该 App.config 文件进行了三次检查:它在源代码管理中。此外,失败的项目正在其他位置构建,没有任何问题。

当我在 Visual Studio 2012 中构建时,它工作正常。当我从命令行使用 MSBuild 构建它时,它工作正常。我什至在我的本地计算机上安装了 Team Foundation Server 2012,以便我可以使用 Team Foundation Service 用于 MSBuild 的确切命令行参数。那工作得很好。

如果您需要更多信息,我将很乐意提供。提前感谢您的所有帮助。

编辑:这是 MSDN TFService 论坛上此问题的链接,其中还有完整的诊断日志。

编辑(12/12):在做伊利亚的建议时(在他下面的回答中),我从日志中得到这个:

更大的日志错误

4

2 回答 2

1

好的,我终于得到了这个工作。嘘!

根据上面链接中的 MSDN 讨论,DataLayerExtensions 项目的 app.config 文件以某种方式损坏。从源代码管理中删除它,然后重新制作配置文件就可以了。重要的是要注意,12/12 编辑的图片中的错误不是指向 DataLayer 项目!它实际上是构建依赖项(GlobalItems 和 DataLayer)之后尝试构建 DataLayerExtensions 项目的第一行!选项卡中有一点细微差别。

随后,还发生了其他 app.config 错误——所有这些都是因为实际上不在源代码管理中,或者与 DataLayerExtensions 配置文件具有相同的损坏。

最后要提到的一点是,显然,对于 TFService,如果您使用任何 3rd-party 工具,您将在构建服务中遇到错误,即使它在您的本地计算机上构建良好。为了解决这个问题,我必须创建一个新文件夹,将那些第 3 方程序集复制到其中,让所有相关项目将它们的引用切换到该文件夹​​中的 .dll 文件,然后继续检查它。一旦那个完成,构建成功完成。

MSDN 链接上仍然存在一个悬而未决的问题,即为什么 Excel API 也像第 3 方工具一样被拒绝,但这超出了这个问题的范围。

于 2012-12-13T23:13:12.510 回答
0

尝试将这样的内容添加到失败的 csproj 并在云中运行,可能会泄露 app.config 丢失的原因。可能是其他一些自定义事件删除/重命名导致 msbuild 失败?

<Target Name="AfterBuild">
  <Warning Text="### DEBUG ###" />
  <ItemGroup>
    <All Include="**\*.*" />
    <Compile>
      <Exists Condition="!Exists('%(Identity)')">FALSE</Exists>
    </Compile>
    <AppConfigWithTargetPath>
      <Exists Condition="!Exists('%(Identity)')">FALSE</Exists>
    </AppConfigWithTargetPath>
  </ItemGroup>
  <Warning Text="### All: %(All.Identity)" />
  <Warning Text="### Compile: %(Compile.Exist) # %(Compile.Identity)" />
  <Warning Text="### App: %(AppConfigWithTargetPath.Exist) # %(AppConfigWithTargetPath.Identity) # %(AppConfigWithTargetPath.FullPath)" />
</Target>    
于 2012-12-12T01:26:46.240 回答