asp.net - Visual Studio 认为安装了未安装的 NuGet 包
问题描述
我有一个依赖于一些 Telerik 包的 ASP.NET Web 表单网站。当我在 Visual Studio 和“管理 NuGet 包”中右键单击网站时,这些包列在“已安装”选项卡下:
然而:
- 查看 Global.asax 时,我收到有关 Telerik.ReportViewer.Html5.WebForms 的错误“无法加载文件或程序集”,这似乎破坏了 IntelliSense 和语法突出显示
- 该程序集不存在于网站的 Bin 目录中
- 当我尝试卸载软件包时,什么也没有发生,它们仍然被列为已安装
解决方案
自从您安装了该软件包以来,这有点奇怪Telerik.ReportViewer.Html5.WebForms
。
请尝试以下步骤:
1)禁用扩展下安装的任何第三方vs扩展->管理扩展
2) 清理所有nuget缓存或删除所有文件,C:\Users\xxx(current user)\.nuget\packages
然后重建您的项目。
3)关闭VS Instance,删除.vs
解决方案文件夹下的隐藏文件夹bin
和obj
文件夹,然后重建你的项目。
4)devenv /safemode
在开发人员命令提示下运行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>
5)或者您可以尝试创建一个新的 asp net 网站项目,然后安装该 nuget 包以测试问题是否再次发生。
如果还存在,请修复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
文件夹,然后重建您的项目以检查 dll 是否存在于Bin文件夹下。
更新 2
==================================================== ===
终于找到原因了。
原来这个问题是由另一个包安装失败引起的。这是我之前没有安装过的一个,所以我只是忽略了它,但看起来如果 NuGet 无法安装包,它甚至不会尝试安装任何后续包。
推荐阅读
- python - E:pyppeteer.connection - 连接意外关闭
- python - spark提交到与krb5.conf相关的minikube错误
- java - 从 Postman 发送的请求在 Spring Boot App (Hibernate+JPA) 中只工作两次
- kotlin - 关于kotlin协程基础Api的问题
- apache-kafka - kafka中每个实体的主题
- javascript - 如何在不访问 JavaScript 中的重定向链接的情况下获取重定向的最终链接
- if-statement - Quicksight 根据其他列的条件计算不同的 ID
- reactjs - Ant Design 有条件地需要 Form.Item
- python - 放大精灵后,弹道轨迹混乱
- python-3.x - 发布到 Rabbitmq,Channel is closed 错误