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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了破碎的Nuget包参考文献开箱即用相关的知识,希望对你有一定的参考价值。

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 'PathToMySolutionpackages'
...
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”已经检查过了。
  • 我已经多次删除了packagesSelenium.WebDriver.ChromeDriver.2.28.0文件夹,并且也进行了几次“NuGet Package Restore”,但问题仍然存在。

什么是正确的解决方案?

答案

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

根据UPDATE2中的错误日志:

Package 'NUnit 3.6.1' does not exist in project 'MyProj'
Package 'NUnit 3.6.1' already exists in folder 'PathToMySolutionpackages'

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

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

以上是关于破碎的Nuget包参考文献开箱即用的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 揭秘与实战 源码分析 - 开箱即用,内藏玄机

流明无法开箱即用

开箱即用的性能分析工具pinpoint

lv_lib_100ask| 基于lvgl库的各种开箱即用的方案参考或对lvgl库的组件增强接口

websocket入门一条龙,基础封装与使用(代码开箱即用)

Java是否使用JNI“开箱即用”?