遇到问题是项目在本地编译就好了,但是TFS构建报告说无法找到程序集。
日志文件将显示:
2> C:\ Program Files (86)\的MSBuild \ 12.0 \ BIN \ AMD64 \ Microsoft.Common.CurrentVersion.targets(1696,5): 警告MSB3245:无法解析此引用。找不到 汇编" HtmlAgilityPack"。检查以确保装配存在 在磁盘上。如果您的代码需要此引用,您可能会得到 编译错误。 [C:\构建\ 1 \的Myproj \的Myproj-DEV-站点\ SRC \的Myproj \ MyProj.Domain \ MyProj.Domain.csproj] 对于SearchPath" {HintPathFromItem}"。 考虑" .. \ packages \ HtmlAgilityPack.1.4.6 \ lib \ Net45 \ HtmlAgilityPack.dll",但 它不存在。
我遇到的问题是该位置肯定有/ packages /文件夹:
C:\构建\ 1 \的Myproj \的Myproj-DEV-站点\ SRC \的Myproj \包\
TFS服务器上的相对提示路径是否有所不同?看起来它与它正在检查的.csproj文件有关。我可以在构建输出文件夹上确认包(和DLL)正好是HintPath指定的位置。
更新:我找到了解决问题的方法。这是双重的。一个是我无法读取文件浏览器并且没有注意到我的HtmlAgilityPack文件夹只有包的XML文件,而不是实际的DLL。其次,我不得不删除'包裹'来自TFS的文件夹,转到'源代码管理资源管理器'并从我的项目中删除它。 TFS处理剩下的事情。现在一切都正常建立。
更多信息:http://robertgreiner.com/2013/09/team-foundation-service-build-error-nuget/
答案 0 :(得分:2)
由于这里没有正式答案(即使OP将其置于上面):
更新:我找到了解决问题的方法。这是双重的。一个是我无法读取文件浏览器并且没有注意到我的HtmlAgilityPack文件夹只有包的XML文件,而不是实际的DLL。其次,我必须通过转到'Source Control Explorer'并从我的项目中删除它来从TFS中删除'packages'文件夹。 TFS处理剩下的事情。现在一切都正常建立。
似乎有关于从TFS运行构建的方式,如果“packages”文件夹已经存在,即使在一个非常好的位置,即使在本地工作的预期相对位置,MSBuild也不会接受该位置并且更喜欢以递归方式搜索所有.targets目录。无论如何,我可以确认删除..\packages
文件夹在VS2015 / TFS2013中有效。