Visual Studio 认为 NuGet 包已安装但未安装
Visual Studio thinks NuGet packages are installed that aren't
我有一个 ASP.NET Web 表单网站,它依赖于某些 Telerik 包。当我在 Visual Studio 和“管理 NuGet 包”中右键单击网站时,这些包列在“已安装”选项卡下:
但是:
- 查看 Global.asax 时,我收到有关 Telerik.ReportViewer.Html5.WebForms 的错误“无法加载文件或程序集”,这似乎破坏了 IntelliSense 和语法突出显示
- 程序集不存在于网站的 Bin 目录中
- 当我尝试卸载软件包时,没有任何反应,它们仍列为已安装
安装包 Telerik.ReportViewer.Html5.WebForms
.
有点奇怪
请尝试以下步骤:
1) 在 Extensions-->Manage Extensions[=88= 下禁用任何第三方安装与扩展]
2) clean all nuget caches 或删除 C:\Users\xxx(current user)\.nuget\packages
下的所有文件,然后重建您的项目。
3)关闭VS实例,删除解决方案文件夹下的.vs
隐藏文件夹,bin
和obj
文件夹,然后重建你的项目。
4) 运行 devenv /safemode
under Developer Command Prompt for VS启动纯VS然后在其中测试您的项目。
此外,当你完成检查后,请在你的主web项目中添加bindredirect。
添加这个:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Telerik.ReportViewer.Html5.WebForms" publicKeyToken="eb42632606e9261f" />
<bindingRedirect oldVersion="0.0.0.0-14.1.20.618" newVersion="14.1.20.618" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Like this link.
5) 或者您可以尝试 创建一个新的 asp 网络站点项目 然后安装该 nuget 包测试问题是否再次发生。
如果仍然存在,请repair VS或更新到最新版本。
===========================================
更新 1
首先清理 nuget 缓存,删除 Bin
文件夹,或者只使用 nuget xxx\xxx.sln 恢复包,然后重新运行 update-package -reinstall
再次测试。之后,重新构建您的网站项目。
请检查您的 web.config
文件并确保您有这样的节点:
<compilation debug="true" targetFramework="4.7.2">
<assemblies>
<add assembly="Telerik.ReportViewer.Html5.WebForms, Version=14.2.20.916, Culture=neutral, PublicKeyToken=A9D7983DFCC261BE" />
</assemblies>
</compilation>
确保您在 web.config.
中引用了此类 dll
然后,删除.vs
隐藏文件夹和Bin
文件夹然后重建你的项目,检查Bin[下是否存在dll文件夹。
更新 2
============================================= ========
终于找到原因了
原来是另一个包安装失败导致的。这是我以前没有安装过的一个,所以我只是忽略了它,但看起来如果 NuGet 无法安装包,它甚至不会尝试安装任何后续包。
我偶然发现了这个话题,只是想简单地补充一下 运行 update-package -reinstall
为我解决了这个问题。我遇到了问题,可能是因为我有很多项目引用相同的 Nuget 包。
- 工具
- Nuget 包管理器
- 包管理器控制台
- 粘贴:
update-package -reinstall
- 按回车键
我有一个 ASP.NET Web 表单网站,它依赖于某些 Telerik 包。当我在 Visual Studio 和“管理 NuGet 包”中右键单击网站时,这些包列在“已安装”选项卡下:
但是:
- 查看 Global.asax 时,我收到有关 Telerik.ReportViewer.Html5.WebForms 的错误“无法加载文件或程序集”,这似乎破坏了 IntelliSense 和语法突出显示
- 程序集不存在于网站的 Bin 目录中
- 当我尝试卸载软件包时,没有任何反应,它们仍列为已安装
安装包 Telerik.ReportViewer.Html5.WebForms
.
请尝试以下步骤:
1) 在 Extensions-->Manage Extensions[=88= 下禁用任何第三方安装与扩展]
2) clean all nuget caches 或删除 C:\Users\xxx(current user)\.nuget\packages
下的所有文件,然后重建您的项目。
3)关闭VS实例,删除解决方案文件夹下的.vs
隐藏文件夹,bin
和obj
文件夹,然后重建你的项目。
4) 运行 devenv /safemode
under Developer Command Prompt for VS启动纯VS然后在其中测试您的项目。
此外,当你完成检查后,请在你的主web项目中添加bindredirect。
添加这个:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Telerik.ReportViewer.Html5.WebForms" publicKeyToken="eb42632606e9261f" />
<bindingRedirect oldVersion="0.0.0.0-14.1.20.618" newVersion="14.1.20.618" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Like this link.
5) 或者您可以尝试 创建一个新的 asp 网络站点项目 然后安装该 nuget 包测试问题是否再次发生。
如果仍然存在,请repair VS或更新到最新版本。
===========================================
更新 1
首先清理 nuget 缓存,删除 Bin
文件夹,或者只使用 nuget xxx\xxx.sln 恢复包,然后重新运行 update-package -reinstall
再次测试。之后,重新构建您的网站项目。
请检查您的 web.config
文件并确保您有这样的节点:
<compilation debug="true" targetFramework="4.7.2">
<assemblies>
<add assembly="Telerik.ReportViewer.Html5.WebForms, Version=14.2.20.916, Culture=neutral, PublicKeyToken=A9D7983DFCC261BE" />
</assemblies>
</compilation>
确保您在 web.config.
中引用了此类 dll然后,删除.vs
隐藏文件夹和Bin
文件夹然后重建你的项目,检查Bin[下是否存在dll文件夹。
更新 2
============================================= ========
终于找到原因了
原来是另一个包安装失败导致的。这是我以前没有安装过的一个,所以我只是忽略了它,但看起来如果 NuGet 无法安装包,它甚至不会尝试安装任何后续包。
我偶然发现了这个话题,只是想简单地补充一下 运行 update-package -reinstall
为我解决了这个问题。我遇到了问题,可能是因为我有很多项目引用相同的 Nuget 包。
- 工具
- Nuget 包管理器
- 包管理器控制台
- 粘贴:
update-package -reinstall
- 按回车键