我被其他人给了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
文件夹。所以道路似乎是正确的。
为什么我的项目仍然无法加载引用?
答案 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)
为我修复缺失的项目参考的原因是: