nuget 无法识别已安装的软件包

问题描述 投票:0回答:7

我在 Git 上有一个使用 NuGet 库的 C# 项目。一切工作正常,但当我打开一台新机器并在 Visual Studio 中打开解决方案时,由于引用损坏,它无法编译。如果我单击项目下的参考文献,我可以看到带有黄色感叹号的经典警告标志。

Nuget恢复不会做任何事情(我仍然没有发现这个功能的任何用途......),文件repositories.config没问题。如果我右键单击解决方案,然后“管理解决方案的 NuGet 包”,则不会显示已安装的包。

直到今天我是这样解决的:运行

Install-Package package_name

它说:

'package_name' already installed.
My_project already has a reference to 'package_name'.

...之后,它会显示 Manager 上的包,这些包已分配给正确的项目。


代码中任何地方都没有任何更改,我可以看到这一点,因为 Git 上没有差异。

我只需在新机器上执行一次,但这真的很烦人。有什么想法吗?


NuGet版本:2.8.60318.667


更新 27/07

我在另一台装有 Windows 10 的 PC 上从头开始尝试该过程,一切正常...相同版本的 Visual Studio、NuGet 等...我很困惑

c# .net visual-studio visual-studio-2012 nuget
7个回答
10
投票

这可能是因为 .csproj 中 .dll 的路径不正确。包恢复将包下载到本地目录。它不会更改 .csproj 中程序集的引用路径,这意味着项目仍会尝试在本地目录中查找 dll。黄色标记表示项目无法找到该程序集。

卸载项目,右键单击项目并选择“编辑.csproj”,并验证丢失的dll的路径。例如 - 如果您有 NUnit,

<Reference Include="nunit.framework">
      <HintPath>..\packages\NUnit.3.6.1\lib\net45\nunit.framework.dll</HintPath>
</Reference>

验证 dll 是否存在于“\packages\NUnit.3.6.1\lib”中 et45”目录。


9
投票

从我的脑海中,我可以想到软件包没有被下载的几个原因,理想情况下您必须分享更多细节。

首先 install-package 命令不起作用。您的软件包已安装,VS 只是无法下载它们,因此您收到该错误是有道理的。

  • 首先也是最重要的是,这是一个托管在 nuget.org 中的公共包,例如 系统.MVC.Web?因为如果这是在一台新机器中,使用私有 nuget 服务器,您需要 在“工具”>“选项”>“Nuget 包管理器”> 中配置该源 包来源。 (有关更多详细信息,请参阅https://learn.microsoft.com/en-us/nuget/tools/package-manager-ui
  • 检查您是否已将文件夹添加到 git 存储库中,但同时 时间设置其内容的排除。要检查当您执行 clean checkout 查看文件夹是否存在但为空。如果那是 如果只是删除文件夹, gitignore 应该从中完成它的工作 从现在开始,每个新克隆都将进行正确的检查。
  • 如果以上两个最有可能是原因 不行。尝试从包管理器恢复包 控制台并使用详细信息更新您的帖子。

您可以打开包管理器控制台并输入:

Update-Package -reinstall

Update-Package -reinstall -Project YourProjectName

仅供参考,Microsoft 有一份全面的文档 - https://learn.microsoft.com/en-us/nuget/consume-packages/package-restore - 关于恢复 nuget 包的多种方法


2
投票

我已经解决了这个问题。请按照以下步骤操作

  1. 在 Visual Studio 中,单击 工具 > 扩展和更新
  2. 导航到Online,搜索“NuGet Package Manager for Visual Studio”,然后单击 更新
  3. (如果没有按钮 Update,请导航至 Updates > Visual Studio Gallery,找到“NuGet Package Manager for Visual Studio”并单击更新。)
  4. 然后重新启动 Visual Studio。

2
投票

尝试从下面的 nuget 缓存文件夹中删除您的包,以便强制从源下载 NUGET

C:\Users\<< your user name >>\.nuget\packages


2
投票

我今天遇到了这个问题,升级到最新版本的VS 2017(15.8.7)完全没有帮助。

检查您的packages.config 文件,看看您的packages 标签是否如下所示:

<packages xmlns="urn:packages">

如果是这样,请删除 xmlns 属性,这样它就只是:

<packages>

这为我解决了问题!


0
投票

即使您在解决方案级别安装了它,根据您的默认设置,您可能也必须选择您希望它在哪些项目中可用。这就是我的问题。


0
投票

我刚刚降级了软件包版本,然后重新安装了应该显示的版本,它解决了问题。希望这有帮助

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