【发布时间】: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