【问题标题】:TFS Build Issue with App.config file (Error 3719)App.config 文件的 TFS 构建问题(错误 3719)
【发布时间】:2012-11-23 17:23:01
【问题描述】:

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

这是我不断收到的错误:

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

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

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

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

编辑:Here's a link MSDN TFService 论坛上的这个问题,那里还有完整的诊断日志。

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

【问题讨论】:

  • 构建服务器上是否运行了杀毒软件?
  • 构建服务器在云端。
  • 您能否检查文件是否已签出并存在于其中?可以将带有<message text="%(fullpath)" />**\*.* 项目组放入失败的csproj。
  • 我该怎么做(我以前从未放入过 ItemGroup)?
  • 好的,有人能解释一下-1吗?

标签: visual-studio tfs msbuild visual-studio-2012 azure-devops


【解决方案1】:

好的,我终于搞定了。呵呵!

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

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

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

关于为什么 Excel API 也像第 3 方工具一样被拒绝的原因,MSDN 链接上仍有一个悬而未决的问题,但这超出了本问题的范围。

【讨论】:

    【解决方案2】:

    尝试将这样的内容添加到失败的 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>    
    

    【讨论】:

    • 我认为失败的是 DataLayerExtensions 项目,而不是 GlobalItems,您可以将其添加到那个项目中吗?
    • 完成,但我认为错误可能现在在 DataLayer 项目中。
    • 不知道,抱歉,文件似乎可以复制,尝试使用各种空白项目依赖组合复制它,但无法得到像您这样的错误。如果它仍然是一个大问题,您可以删除所有代码文件,清除配置和其他敏感数据并尝试构建它,如果失败 - 可能与该清空解决方案共享一个 zip,以便其他人可以尝试和调试。编辑:没关系,我看到你修好了。
    猜你喜欢
    • 2016-01-02
    • 1970-01-01
    • 2016-12-14
    • 2016-01-19
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 2016-01-29
    相关资源
    最近更新 更多