【问题标题】:Assembly not found during TFS Build在 TFS 构建期间未找到程序集
【发布时间】:2015-07-10 16:57:30
【问题描述】:

遇到问题是项目在本地编译得很好,但 TFS 构建报告找不到程序集。

日志文件将显示:

2>C:\Program 文件 (x86)\MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets(1696,5): 警告 MSB3245:无法解析此引用。找不到 程序集“HtmlAgilityPack”。检查以确保程序集存在 在磁盘上。如果您的代码需要此参考,您可能会得到 编译错误。 [C:\Builds\1\MyProj\MyProj-Dev-Site\src\MyProj\MyProj.Domain\MyProj.Domain.csproj] 对于搜索路径“{HintPathFromItem}”。 考虑“..\packages\HtmlAgilityPack.1.4.6\lib\Net45\HtmlAgilityPack.dll”,但 它不存在。

我的问题是该位置肯定有一个 /packages/ 文件夹:

C:\Builds\1\MyProj\MyProj-Dev-Site\src\MyProj\packages\

TFS 服务器上的相对提示路径是否有所不同?似乎它与它正在检查的 .csproj 文件有关。我可以在构建输出文件夹中确认包(和 DLL)正是 HintPath 指定的位置。

更新:我找到了问题的解决方案。这是双重的。一是我无法读取文件资源管理器并且没有注意到我的 HtmlAgilityPack 文件夹只有包的 XML 文件,而不是实际的 DLL。其次,我必须通过转到“源代码管理资源管理器”并从我的项目中删除它来从 TFS 中删除“包”文件夹。 TFS 处理了剩下的事情。现在一切正常。

更多信息:http://robertgreiner.com/2013/09/team-foundation-service-build-error-nuget/

【问题讨论】:

  • 哪个版本的 TFS?自动包还原仅适用于 TFS 2013 更新 3 及更高版本。如果您的构建服务器仍在运行以前的版本,它将无法工作。
  • 我会尽快回复您。你觉得它与包恢复有关吗?包文件和二进制文件在构建服务器上,当我远程进入时我可以看到它们。
  • 除非有人手动添加了引用,即使那样,所有路径都应该是相对的。
  • 是的,在查看 .csproj 文件时,它在 HintPath 中是相对的。对我来说,令人困惑的部分是,相对于程序集的 HintPath 中的 .csproj 文件,匹配文件正是它所说的位置。此外,我们目前在 TFS2013 的 SP2 上。它正在升级,所以我可以报告这是否解决了问题。
  • 这是错误提交的包文件夹!

标签: visual-studio-2013 tfs msbuild


【解决方案1】:

由于这里没有官方答案(即使 OP 把它放在上面):

更新:我找到了解决问题的方法。这是双重的。一是我无法读取文件资源管理器并且没有注意到我的 HtmlAgilityPack 文件夹只有包的 XML 文件,而不是实际的 DLL。其次,我必须通过转到“源代码管理资源管理器”并从我的项目中删除它来从 TFS 中删除“包”文件夹。 TFS 处理了剩下的事情。现在一切正常。

似乎与从 TFS 运行构建的方式有关,如果“packages”文件夹已经存在,即使在一个非常好的位置,即使在本地工作的预期相对位置,MSBuild 也不会接受该位置并且更喜欢递归搜索所有 .targets 目录。无论如何,我可以确认删除 ..\packages 文件夹在 VS2015/TFS2013 中有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-10
    • 2014-08-28
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    相关资源
    最近更新 更多