【问题标题】:MSBuild cannot find reference when executed through TFS build service通过 TFS 构建服务执行时,MSBuild 找不到引用
【发布时间】:2012-10-09 13:08:31
【问题描述】:

我有一个参考 Telerik 程序集的解决方案。参考版本已安装在构建服务器上。问题是持续集成构建始终成功,直到我在解决方案和构建服务器上升级 Telerik 程序集。现在构建失败了:

无法解析此引用。

我检查了我的解决方案,所有内容都设置为引用特定版本。最令人惊讶的是,如果我在构建服务器上本地打开解决方案,一切都将毫无问题地构建......这意味着 Telerik 程序集已经以某种方式发布,但是由于未知原因,当调用 MSBuild 来编译解决方案时通过构建服务,它不起作用。

有什么想法吗?

【问题讨论】:

  • 获取两个构建的详细 msbuild 日志并进行比较。它会告诉你它从哪里获得引用的程序集(当它成功时)以及它在哪里尝试(当它失败时)。
  • 是的,我会按照 Alexey 下面所说的去做。几天前有类似的问题,删除所有引用并重新创建它们是解决方案。
  • 一一重新创建所有引用绑定并没有解决错误。在这个问题上已经花了将近一天的时间,所以 Telerik 升级可能会等待不那么紧张的时期。回滚到以前的版本,一切都恢复正常。我查看了 MSBuild 日志,并且由于某些未知原因,构建服务器根本看不到正确的文件夹。也许问题源于新的 Telerik 包部署。

标签: reference tfs msbuild continuous-integration


【解决方案1】:

更新到第三季度版本后我遇到了同样的问题。

为了解决这个问题,我构建了将 Logging Verbosity 设置为 Diagnostic 的解决方案,发现 MSBuild 从不费心查看 Telerik 文件夹。

因此,为了在构建中包含该文件夹,我们只需添加一个 MSBuild 参数即可: /p:ReferencePath="C:\Program Files\Telerik\RadControls for WPF Q3 2012\Binaries\WPF40"

它可能不是最好的,每次更新 RadControls 时都需要更新,但它确实有效。

我们在 x86 安装上运行构建服务器,因此 Telerik 位于 C:\Program Files 下,但如果您在 x64 上运行,它位于 C:\Program Files(x86) 下,因此如果您运行多个构建服务器在 x64 和 x86 安装中,您必须同时指定两个路径。

【讨论】:

    【解决方案2】:

    尝试删除-然后-添加对更新的 dll 的引用 - 然后您可以在 proj 文件中查看与引用的程序集是否有任何差异。

    为 msbuild 启用详细\diag 模式(/v:diag 命令行键)并检查构建日志。诊断模式有非常详细的关于引用库搜索过程的输出。

    【讨论】:

    • 我删除了所有对 Telerik 的引用,然后一一重新制作,但我仍然在构建时遇到相同的错误。修复和跟踪错误已经花了将近一天的时间,所以我们决定回滚到以前的版本,它再次正常工作......此外,构建服务搜索过程正在查看数百个文件夹,但在通过 Visual Studio 构建时没有找到任何东西。
    • 从 Visual Studio 日志中,您可以确定在哪里可以找到正确的 dll。然后确保 TFS 搜索该目录。检查 proj 文件中的
    【解决方案3】:

    我通常发现将引用的程序集复制到解决方案中并从那里引用它们会更好。然后构建服务器和其他开发人员无需担心安装特定版本,您可以支持多个项目运行不同版本的组件。

    【讨论】:

    • 我只对不容易或根本不可重新分发的程序集这样做。我不是很喜欢用大量 dll 加载源代码控制数据库,因为有些项目有很多引用,并且获得一个包含 50MB 程序集的项目源可能会很痛苦,尤其是当您离开办公室时连接不良。但我认为这确实是一种安全的做法。
    • 或使用 DLL 创建自定义 NuGet 包并启用包还原模式。这样,源代码控制中就没有 DLL,没有安装的机器会得到它(它会比从 Telerik 下载的要小)并且机器可以构建引用多个不同版本的项目。
    猜你喜欢
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 2015-11-28
    • 2015-02-16
    相关资源
    最近更新 更多