.NET程序集绑定失败(带有重定向的不同版本),很奇怪!

时间:2009-06-24 19:08:11

标签: .net .net-2.0

我正在尝试对安装了9.3版本的计算机上针对供应商库的9.1版构建的应用程序进行故障排除。供应商提供了一个发布者策略文件,可将所有版本从9.0开始重定向到其9.3 dll,并安装在GAC中。

使用我们的应用程序的较新版本(针对9.2版构建),找到了发布者策略文件,并且所有内容都正常工作。使用9.1链接版本时,fuslogvw结果中根本不会提及发布者策略文件。

以下是fuslogvw成功加载的示例:

LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe.Config
LOG: Using machine configuration file from c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Publisher policy file is found at C:\WINDOWS\assembly\GAC_MSIL\policy.9.2.ESRI.ArcGIS.System\9.3.0.1770__8fc3cc631e44ad86\ESRI.ArcGIS.System.config.
LOG: Publisher policy file redirect is found: 9.2.0.1324 redirected to 9.3.0.1770.
LOG: ProcessorArchitecture is locked to MSIL.
LOG: Post-policy reference: ESRI.ArcGIS.System, Version=9.3.0.1770, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86, processorArchitecture=MSIL
LOG: Found assembly by looking in the GAC.
LOG: Binding succeeds. Returns assembly from C:\WINDOWS\assembly\GAC_MSIL\ESRI.ArcGIS.System\9.3.0.1770__8fc3cc631e44ad86\ESRI.ArcGIS.System.dll.
LOG: Assembly is loaded in default load context.

而且,这是失败:

LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe.Config
LOG: Using machine configuration file from c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Post-policy reference: ESRI.ArcGIS.System, Version=9.1.0.722, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///C:/Program Files/NatureServe/Vista/ESRI.ArcGIS.System.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/NatureServe/Vista/ESRI.ArcGIS.System/ESRI.ArcGIS.System.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/NatureServe/Vista/ESRI.ArcGIS.System.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/NatureServe/Vista/ESRI.ArcGIS.System/ESRI.ArcGIS.System.EXE.
LOG: All probing URLs attempted and failed.

注意:显示名称,区域性和公钥标记是相同的。

那么,有什么不同(除了版本#)?为什么.NET找不到策略文件?我们需要做些什么黑魔法才能克服这个问题(直到我们可以放弃对9.1平台的支持)?

1 个答案:

答案 0 :(得分:0)

啊,在互联网上发布问题的魔力:

看起来策略文件的路径包含'9.2'版本字符串作为文件夹名称的一部分,我只能假设它意味着它只能解析供应商库的9.2版本的请求。

因此它看起来未完全安装(因为策略文件本身会重定向版本9.0以后)。

我们可以将自己的重定向包含在应用程序配置文件中,如here所述;虽然它需要取决于供应商软件的版本。

我承认我对这个解决方案并不太感兴趣......