nuget没有识别已安装的软件包

时间:2017-07-14 13:46:05

标签: c# .net visual-studio visual-studio-2012 nuget

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

Nuget恢复不会做任何事情(我仍然没有发现任何使用此功能......),文件repositories.config很好。如果我右键单击解决方案,然后“管理NuGet包以获得解决方案”#39;没有显示已安装的软件包。

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

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

我在另一台PC上尝试从头开始,使用Windows 10,一切正常......相同版本的Visual Studio,NuGet等......我感到困惑

5 个答案:

答案 0 :(得分:7)

这可能是因为.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是否存在于&#34; \ packages \ NUnit.3.6.1 \ lib \ net45&#34; 。目录

答案 1 :(得分:2)

从头脑中我可以想到没有下载软件包的几个原因,理想情况下你需要分享一些细节。

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

  • 首先,这是一个在nuget.org上托管的公共软件包 System.MVC.Web?因为如果这是在新机器中,使用私有nuget服务器,则需要 在工具&gt;中配置该源选项&gt; Nuget包管理器&gt; 包装来源。 (有关详细信息,请参阅https://docs.microsoft.com/en-us/nuget/tools/package-manager-ui
  • 检查您是否已将文件夹添加到git仓库,但同时也是如此 时间设置其内容的排除。要在你做的时候检查一下 清理结帐查看文件夹是否存在但是为空。如果那样的话 case只是删除文件夹,git ignore应该从中完成它的工作 现在,每个新克隆都会进行适当的检查。
  • 如果以上两个最有可能成为原因的话 不行。尝试从包管理器中恢复包 控制台并使用详细信息更新您的帖子。

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

Update-Package -reinstall

Update-Package -reinstall -Project YourProjectName

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

答案 2 :(得分:1)

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

  1. 在Visual Studio中,单击工具&gt; 扩展和更新
  2. 导航至在线,搜索&#34; NuGet Package Manager for Visual 工作室&#34;并单击更新
  3. (如果没有按钮更新,请导航至更新&gt; 视觉 Studio Gallery ,找到&#34; NuGet Package Manager for Visual 工作室&#34;然后点击更新。)
  4. 然后重新启动Visual Studio。

答案 3 :(得分:1)

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

检查您的packages.config文件,看您的packages标签是否像这样:

<packages xmlns="urn:packages">

如果确实如此,请删除xmlns属性,使其仅为:

<packages>

为我解决了这个问题!

答案 4 :(得分:0)

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

C:\ Users \ <<您的用户名>> \。nuget \ packages