我在 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 等...我很困惑
这可能是因为 .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”目录。
从我的脑海中,我可以想到软件包没有被下载的几个原因,理想情况下您必须分享更多细节。
首先 install-package 命令不起作用。您的软件包已安装,VS 只是无法下载它们,因此您收到该错误是有道理的。
您可以打开包管理器控制台并输入:
Update-Package -reinstall
或
Update-Package -reinstall -Project YourProjectName
仅供参考,Microsoft 有一份全面的文档 - https://learn.microsoft.com/en-us/nuget/consume-packages/package-restore - 关于恢复 nuget 包的多种方法
我已经解决了这个问题。请按照以下步骤操作
尝试从下面的 nuget 缓存文件夹中删除您的包,以便强制从源下载 NUGET
C:\Users\<< your user name >>\.nuget\packages
我今天遇到了这个问题,升级到最新版本的VS 2017(15.8.7)完全没有帮助。
检查您的packages.config 文件,看看您的packages 标签是否如下所示:
<packages xmlns="urn:packages">
如果是这样,请删除 xmlns 属性,这样它就只是:
<packages>
这为我解决了问题!
我刚刚降级了软件包版本,然后重新安装了应该显示的版本,它解决了问题。希望这有帮助