破损的Nuget包参考文献开箱即用

时间:2017-12-15 20:08:08

标签: visual-studio tfs nuget nuget-package-restore

同样的症状 Nuget Packages are there but missing References 但复制的用例要简单得多:

  • 用户A将他/她的代码签入TFS
  • 用户B(或C,D等)首次从TFS获得解决方案,或者进入一个全新的地方。

结果:Nuget维护的所有References dll显示破碎的黄色三角形,即使在该线程推荐的“Clear All NuGet Cache”和“Update-Package -reinstall”hack之后也是如此。关闭&重新开放VS&解决方案将不起作用,尽管在Update-Package -reinstall之后,dll正好在那里。

这是VS2017版本15.3.5。

更新

结果显示“可用”是“.xml”文件,其文件浏览器中的扩展名未正常显示。即,“.dll”文件丢失,Update-Package -reinstall未恢复。

UPDATE2:

Update-Package -reinstall无效,因为 failed to add reference Reference unavailable )。以下是完整日志:更新:解决后删除,查看历史记录,或从https://pastebin.com/1e5axkTm结帐。

当我查看日志时,我明白了,

Package 'NUnit 3.6.1' does not exist in project 'MyProj'
Package 'NUnit 3.6.1' already exists in folder '\Path\To\MySolution\packages'
...
Update-Package : Failed to add reference to 'nunit.framework'.
  Reference unavailable.

我的解释是,因为nunit.framework DLL不在TFS中,因此在本地不可用于从TFS获得解决方案的用户B(或C,D等),但是Update-Package -reinstall没有注意到,也无法解决问题。因此导致更多问题 - failed to add reference Reference unavailable )。

UPDATE3:

感谢@ LeoLiu-MSFT& @ starianchen-MSFT的帮助,不包括Source Control中的包文件夹解决了上述问题。 “Update-Package -reinstall”现在没有任何错误(如果您需要仔细检查,https://pastebin.com/e8TpXg2D

最终更新:

是的,@ LeoLiu-MSFT& @ starianchen-MSFT,不包括源代码管理中的包文件夹 的关键!请回答,以便我接受。

以下是由完全不同的问题引起的 - All MS VS References broken after project moved

  

但是,即使经过上述操作,也可以使用“NuGet Package Restore”进行下载   他们,我仍然得到以下内容:

     

错误此项目引用了缺少的NuGet包   这台电脑。使用NuGet Package Restore下载它们。更多   信息,请参阅http://go.microsoft.com/fwlink/?LinkID=322105。该   遗失的文件是   .. \包\ Selenium.WebDriver.ChromeDriver.2.28.0 \建立\ Selenium.WebDriver.ChromeDriver.targets。

     
      
  • 我已检查http://go.microsoft.com/fwlink/?LinkID=322105页面,“Allow NuGet to download missing packages”和“Automatically check for missing packages during build in Visual Studio”已经过检查。
  •   
  • 我已多次删除packages\Selenium.WebDriver.ChromeDriver.2.28.0文件夹,并多次执行“NuGet Package Restore”   好吧,但问题仍然存在。
  •   
     

什么是正确的解决方案?

1 个答案:

答案 0 :(得分:1)

  

破坏Nuget包参考文件开箱即用

根据 UPDATE2:

中的错误日志
Package 'NUnit 3.6.1' does not exist in project 'MyProj'
Package 'NUnit 3.6.1' already exists in folder '\Path\To\MySolution\packages'

您似乎在源代码管理中添加了packages文件夹。

要解决此问题,您应从源代码管理中删除该packages文件夹。您只需要检查源控件的packages.config(或project.json),当从TFS获取解决方案的其他用户B,然后使用命令行Update-Package -reinstall时, VS / NuGet将首先恢复软件包,然后将dll重新安装到项目中。