代码之家  ›  专栏  ›  技术社区  ›  Andrew Matthews

装配装载问题

  •  2
  • Andrew Matthews  · 技术社区  · 15 年前

    当我从Vista(32位)转换到Windows7(32位)时,我遇到了一个程序集加载问题。它发生在我尝试加载一些非常旧的Sybase ASE ADO.NET数据提供程序DLL时。

        *** Assembly Binder Log Entry  (18/01/2010 @ 5:00:38 PM) ***
    
    The operation failed.
    Bind result: hr = 0x80131018. No description available.
    
    Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
    Running under executable  c:\windows\system32\inetsrv\w3wp.exe
    --- A detailed error log follows. 
    
    === Pre-bind state information ===
    LOG: User = NT AUTHORITY\NETWORK SERVICE
    LOG: DisplayName = sybdrvado11
     (Partial)
    LOG: Appbase = file:///C:/dev/AgentDesktop/ui/newweb/
    LOG: Initial PrivatePath = C:\dev\AgentDesktop\ui\newweb\bin
    LOG: Dynamic Base = C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\newweb\f57489cf
    LOG: Cache Base = C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\newweb\f57489cf
    LOG: AppName = d293c3e5
    Calling assembly : (Unknown).
    ===
    LOG: This bind starts in default load context.
    LOG: Using application configuration file: C:\dev\AgentDesktop\ui\newweb\web.config
    LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework\v2.0.50727\Aspnet.config
    LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
    LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
    LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/newweb/f57489cf/d293c3e5/sybdrvado11.DLL.
    LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/newweb/f57489cf/d293c3e5/sybdrvado11/sybdrvado11.DLL.
    LOG: Attempting download of new URL file:///C:/dev/AgentDesktop/ui/newweb/bin/sybdrvado11.DLL.
    LOG: Assembly download was successful. Attempting setup of file: C:\dev\AgentDesktop\ui\newweb\bin\sybdrvado11.dll
    LOG: Entering download cache setup phase.
    ERR: Error extracting manifest import from file (hr = 0x80131018).
    ERR: Setup failed with hr = 0x80131018.
    ERR: Failed to complete setup of assembly (hr = 0x80131018). Probing terminated.
    

    我花了相当多的时间在谷歌上搜索这个问题以及通过ASP.NET显示的错误消息,但似乎没有一个常见的解决方案是相关的。我确实注意到有一种方法可以使用病毒检查器导致此错误。是否可以在virgin Windows 7计算机上执行此操作?i、 e.是否有任何类型的保护系统会干扰组件加载?

    这在VS.NET 2008和VS.NET 2010 beta 2上都失败了。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Jérôme Verstrynge Mark    13 年前

    将Sybase ASE ADO.NET与 sybdrvado11.dll 您需要另一个文件: MSVCR71.dll Windows\System32

        2
  •  2
  •   pmr    12 年前

    我用资源管理器在GAC文件夹中解决了我的问题。我可以看到 system.runtime.serialization dll,但当我使用cmd提示符时 文件夹dll存在于GACmsil上,而不存在于GAC上。所以我抄了 重新启动VS我的项目编译完美。

    cmd.exe :

    cd\windows\assembly
    attrib -r -h -s desktop.ini
    ren desktop.ini desktop.bak
    

    现在我可以在浏览器中正常打开GAC文件夹,您可以看到实际的结构。

        3
  •  0
  •   Jérôme Verstrynge Mark    13 年前

    问题似乎是在尝试加载时发生的 C:\dev\AgentDesktop\ui\newweb\bin\sybdrvado11.dll .

    这是Sybase ADO.NET提供程序所需的非托管DLL,通常应安装在路径上的某个位置。