【问题标题】:ASP.NET 2.0 "BC2017: could not find library" - How to force .NET to look for correct version?ASP.NET 2.0“BC2017:找不到库” - 如何强制 .NET 查找正确的版本?
【发布时间】:2009-01-21 19:12:50
【问题描述】:

当我们尝试访问一个预编译的 ASP.NET 2.0 (Visual Studio 2005) 应用程序时,它会抛出此错误。

编译器错误消息:BC2017:找不到库 'C:\WINDOWS\assembly\GAC_MSIL\System.Web.Mobile\2.0.0.0__b03f5f7f11d50a3a\System.Web.Mobile.dll'

两个直接的问题浮现在脑海:

  1. 我们运行的是 .NET 版本 2.0.50727,而不是 2.0.0.0
  2. 我们的 GAC 位于“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”,而不是“C:\WINDOWS\assembly\GAC_MSIL\”

很明显,它正在寻找程序集的过时版本,并且在错误的位置寻找它。

很遗憾,我们无法重新编译该应用程序,因为我们正在为客户托管它,并且无法从原始开发人员处获得源代码。有没有办法强制 ASP.NET 应用程序使用当前版本的 System.Web.Mobile.dll 以及它需要的任何其他标准 .NET 程序集?

我们当然会向他们讲解付费开发人员但得不到源代码的危险,但我们肯定会帮助他们让这个东西运行起来,直到他们可以替换它为止。

编辑:事实证明,问题是由于一些影响 GAC 的磁盘损坏造成的。现在我们遇到了一些与重建 GAC 相关的其他 .NET 问题,但这是另一回事。结束这个问题。

【问题讨论】:

    标签: .net asp.net-2.0


    【解决方案1】:

    如果您将要查找的 DLL 与应用程序本身放在同一个文件夹中,它应该先查找那里,然后再回退到 GAC 中的版本

    编辑:刚刚发现http://www.dll-files.com/。您可以检查他们是否拥有您的 DLL 的正确版本

    【讨论】:

    • 我是否也必须将所有 ASP.Net 标准 DLL(如 System.Mobile.Web)放入 app 文件夹中?我是否可以将 2.0.50727 版本放在该文件夹中,因为我似乎无法获得 2.0.0.0 版本?
    • 如果没有它正在寻找的特定版本,我很确定它不会工作。我在使用 Office Interop 部署应用程序时遇到了类似的问题。我需要包含正确版本的 DLL,以便应用程序可以在未安装 Office 2007 的计算机上运行。
    【解决方案2】:

    将模式更改为发布 > 构建解决方案 > 更改为调试 > 再次构建解决方案。

    【讨论】:

      【解决方案3】:

      我有一些课程似乎已包含在项目中,但事实证明它们并非如此。删除/添加回来,现在它构建,其他项目的类库 DLL 存在并且错误消失了。

      【讨论】:

        猜你喜欢
        • 2018-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多