TFS构建代理X还原NuGet包失败问题咨询
这种同一TFS控制器下不同代理构建结果不一致的情况,基本都是两台代理的运行环境存在差异导致的,下面是几个最可能的原因:
NuGet包还原不完整
代理X的工作目录里大概率没正确还原GalaSoft相关的NuGet包(比如常用的MvvmLight库)。可能是代理X的构建过程中跳过了NuGet还原步骤,或者它的本地NuGet缓存里没有这个包——而代理Y之前已经成功构建过,缓存了所需的依赖。你可以去代理X的工作文件夹里检查packages目录,看看有没有GalaSoft相关的子文件夹。全局程序集缓存(GAC)差异
如果GalaSoft的程序集是手动安装到GAC里的(不是通过NuGet管理),那代理Y的机器可能已经装了这个程序集,而代理X没装。这种场景下,构建时会直接从GAC读取依赖,没装的代理自然找不到命名空间。.NET环境版本不匹配
两台代理的.NET框架/SDK版本可能不一样。GalaSoft的组件往往依赖特定版本的.NET环境,要是代理X的环境版本低于要求,就会出现找不到命名空间的错误。你可以分别在两台代理上运行dotnet --version或者查看系统的.NET安装情况,对比版本差异。权限或路径访问问题
代理X运行时使用的账号,可能没有权限访问存放GalaSoft程序集的路径(比如NuGet缓存目录、共享依赖目录)。而代理Y的运行账号有足够权限,所以能正常读取依赖文件。本地构建缓存损坏
代理X的本地构建缓存可能出了问题,导致依赖项没有正确加载。这种情况可以尝试清理代理X的工作目录和构建缓存,然后重新触发构建测试。
内容的提问来源于stack exchange,提问作者lizarazou

