【问题标题】:Visual Studio thinks NuGet packages are installed that aren'tVisual Studio 认为安装了未安装的 NuGet 包
【发布时间】:2021-01-07 09:08:11
【问题描述】:

我有一个依赖于一些 Telerik 包的 ASP.NET Web 表单网站。当我在 Visual Studio 中右键单击网站和“管理 NuGet 包”时,这些包会列在“已安装”选项卡下:

但是:

  1. 查看 Global.asax 时,我收到有关 Telerik.ReportViewer.Html5.WebForms 的错误“无法加载文件或程序集”,这似乎破坏了 IntelliSense 和语法突出显示
  2. 网站的 Bin 目录中不存在这些程序集
  3. 当我尝试卸载这些软件包时,没有任何反应,它们仍然被列为已安装

【问题讨论】:

  • 您是否构建了该项目? “已安装”意味着它们在 packages.config 或 .csproj 中被提及,但它们只会在构建时被复制到 bin。
  • 当我进行构建时,我遇到了同样的错误,即无法加载 Telerik.ReportViewer.Html5.WebForms。
  • 您的项目是否基于net framework?另外,尝试在Tools-->Nuget Package Manager-->Package Manager Conosle下运行update-package -reinstall
  • 这不是一个项目,不幸的是它是一个 ASP.NET 网站。当我尝试重新安装软件包时,它告诉我要进行软件包还原,当我尝试进行软件包还原时,它会失败。
  • 一个网站项目让这件事对我来说更加抽象 - 在配置意义上.. 我在你的屏幕截图中看到你有一个为 Telerik 定义的源。多个源是许多恢复失败(本地提要)的原因,在 Visual Studio 中使用 package.config 和 PackageReference 的组合也是如此(很可能是原因)。您能否在问题中查看并提供您的 Options -> NuGet Package Manager -> General 设置。另外,包括你正在使用的 VS 版本。

标签: asp.net visual-studio webforms nuget telerik-reporting


【解决方案1】:

安装包Telerik.ReportViewer.Html5.WebForms有点奇怪。

请尝试以下步骤:

1)Extensions-->Manage Extensions

下禁用任何第三方安装的vs扩展

2) clean all nuget caches 或删除C:\Users\xxx(current user)\.nuget\packages 下的所有文件,然后重建您的项目。

3)关闭VS Instance,删除解决方案文件夹下的.vs隐藏文件夹,binobj文件夹,然后重建你的项目。

4)VS的开发者命令提示符下运行devenv /safemode来启动一个纯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 net 网站项目,然后安装该 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 无法安装包,它甚至不会尝试安装任何后续包。

【讨论】:

  • 另外,您可以更新https://www.telerik.com/account/ 下的Progress Control Panel for Windows 以检查它是否有效。
【解决方案2】:

我偶然发现了这个线程,只是想补充一下,简单地运行update-package -reinstall 为我解决了这个问题。我遇到了问题,可能是因为我有许多项目引用了相同的 Nuget 包。

  1. 工具
  2. Nuget 包管理器
  3. 包管理器控制台
  4. 粘贴:

update-package -reinstall

  1. 按 Enter 键

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-02
    • 2019-07-23
    • 1970-01-01
    • 2018-04-01
    • 2017-12-21
    • 1970-01-01
    • 2017-05-29
    • 2016-11-24
    相关资源
    最近更新 更多