我目前正在将项目代码移至使用新的Team Foundation Service。我正在尝试设置gated构建,以便在我签入新代码时运行(并在解决方案中运行单元测试),但每次在TFS中构建时我都会遇到相同的错误。
这是我一直得到的错误:
以下是诊断日志中涉及此问题的部分:
我已经对该App.config文件进行了三次检查:它在源代码管理中。此外,失败的项目正在其他地方建立,没有任何问题。
当我在Visual Studio 2012中构建时,它可以正常工作。当我从命令行使用MSBuild构建它时它工作正常。我甚至在本地计算机上安装了Team Foundation Server 2012,以便我可以使用Team Foundation Service用于MSBuild的确切命令行参数。这很好用。
如果您需要更多信息,我将很乐意提供。提前感谢您的所有帮助。
编辑:Here's a link在MSDN TFService论坛上查询此问题,其中还有完整的诊断日志。
编辑(12/12):在做Ilya的建议时(在下面的回答中),我从日志中得到了这个:
答案 0 :(得分:1)
好的,我终于得到了这个工作。好哇!
根据上面链接中的MSDN讨论,DataLayerExtensions项目的app.config文件以某种方式损坏。从源代码控制中删除它然后重新配置配置文件就可以了。值得注意的是,12/12编辑中的图片中的错误并未指向DataLayer项目!它实际上是在构建依赖项(GlobalItems和DataLayer)之后构建DataLayerExtensions项目的第一行!标签中有一点细微差别。
随后,还发生了其他app.config错误 - 所有错误都是因为实际上没有源代码控制或与DataLayerExtensions配置文件具有相同的损坏。
最后要提到的一点是,显然,对于TFService,如果您使用任何第三方工具,您将在构建服务中遇到错误,即使它在本地计算机上构建良好。为了修复我必须创建一个新文件夹,将这些第三方程序集复制到其中,让所有相关项目将其引用切换到该文件夹中的.dll文件,然后继续检查它。完成后,构建成功完成。
在MSDN链接上仍然存在一个未解决的问题,即为什么Excel API也被拒绝,就像第三方工具一样,但这超出了这个问题的范围。
答案 1 :(得分: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>