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

问题描述 投票:1回答:1

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 referenceReference 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 referenceReference unavailable)。

UPDATE3:

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

最终更新:

是的,@ LeoLiu-MSFT和@ starianchen-MSFT,不包括Source Control中的包文件夹是关键!请回答,以便我接受。

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

但是,即使在上面,并使用“NuGet Package Restore”下载它们,我仍然得到以下内容:

错误此项目引用此计算机上缺少的NuGet包。使用NuGet Package Restore下载它们。有关更多信息,请参阅http://go.microsoft.com/fwlink/?LinkID=322105。丢失的文件是.. \ packages \ Selenium.WebDriver.ChromeDriver.2.28.0 \ build \ 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”,但问题仍然存在。

什么是正确的解决方案?

visual-studio tfs nuget nuget-package-restore
1个回答
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)到源代码控制,当其他用户B从TFS获得解决方案,然后使用命令行Update-Package -reinstall,VS / NuGet将首先恢复包,然后重新安装dll到该项目。

© www.soinside.com 2019 - 2024. All rights reserved.