Visual Studio 2015无法在packages文件夹中找到nuget包引用和DLL

时间:2016-08-02 08:01:22

标签: visual-studio visual-studio-2015 nuget

我被其他人给了C#项目。我打开了项目并尝试通过Update-Package -reinstall安装所有Nuget软件包。

它下载了packages文件夹中的所有软件包。

/Projects
  /WebApiTest (root folder)
    WebApiTest.csproj
    WebApiTest.sln
    /packages   (packages are loaded in this folder)

但整个项目仍然表示它缺少所有参考文献。我编辑了csproj文件以查看它尝试加载包的位置,即:

  <ItemGroup>
    <Reference Include="Antlr3.Runtime">
      <HintPath>packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll</HintPath>
    </Reference>
    <Reference Include="EntityFramework">
      <HintPath>packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="EntityFramework.SqlServer">
      <HintPath>packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll</HintPath>
      <Private>True</Private>
    </Reference>
    ... etc.

所以我假设它开始寻找与csproj文件所在的目录相同的目录。在同一目录中也是包含所有DLL文件的packages文件夹。所以道路似乎是正确的。

为什么我的项目仍然无法加载引用?

4 个答案:

答案 0 :(得分:1)

这篇文章已经开始变老,但由于我自己遇到过这个问题并修复了它,我将分享一个可能的解决方案。

我必须手动卸载并重新安装软件包,方法是右键单击有问题的项目,管理NuGet软件包......,然后从那里卸载/重新安装。

小心包版:如果项目没有使用最新的版本,请务必抓住它。

在此过程之后,对我来说明显的效果是csproj文件中的路径已更新。

希望它能帮助某人:)

答案 1 :(得分:1)

在纯文本编辑器中打开项目的csproj文件,并修复DLL的路径。你可能会看到类似的东西:

<HintPath>packages\etc\etc\etc...</HintPath>

我将这些事件更改为:

<HintPath>..\packages\etc\etc\etc...</HintPath>

我将这个更改从项目工作正常的计算机上推了下来,并将它们拉回到坏机器上,这不再是一个问题。

注意:如果您的项目文件与您的包文件夹位于同一文件夹中,则不会出现此问题。

答案 2 :(得分:0)

NuGet是否从命令行成功恢复了包?

尝试从命令行运行此命令,与解决方案位于同一文件夹中:

nuget restore WebApiTest.sln

注意,您可能需要完全限定nuget的执行(例如C:\ nuget \ nuget.exe),或者将其放在路径中。

如果您还没有,可能需要下载NuGet可执行文件。

如果这不起作用,希望它能说明原因!

答案 3 :(得分:0)

为我修复缺失的项目参考的原因是:

  1. 关闭Visual Studio
  2. 删除存储所有nuget包的“packages”文件夹(可能在您的解决方案级别或项目级目录中)
  3. 在Visual Studio中再次打开解决方案
  4. 如果你有automatic package restore on,只需重建,否则先恢复nuget包(从解决方案上下文菜单中),然后重建。