我正在尝试使用以下 app.config 设置程序集绑定(bind)重定向:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.AnalysisServices"
PublicKeyToken="89845dcd8080cc91" />
<bindingRedirect oldVersion="10.0.0.0"
newVersion="9.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
我在 GAC 的 9.0.242.0 版本的机器上运行该程序,并使用指定的公钥 token 。不过,CLR 似乎甚至没有尝试重定向绑定(bind)以使用该版本。
这是我在 fuslogvw.exe 中得到的:
LOG:此绑定(bind)在默认加载上下文中启动。
日志:使用应用程序配置文件:\Debug\AssemblyRedirectPOC.exe.Config
日志:使用 C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config 中的机器配置文件。
LOG:策略后引用:Microsoft.AnalysisServices,Version=10.0.0.0,Culture=neutral,PublicKeyToken=89845dcd8080cc91
日志:GAC 查找不成功。
日志:正在尝试下载新 URL/Debug/Microsoft.AnalysisServices.DLL。
日志:正在尝试下载新 URL/Debug/Microsoft.AnalysisServices/Microsoft.AnalysisServices.DLL。
日志:正在尝试下载新 URL/Debug/Microsoft.AnalysisServices.EXE。
日志:正在尝试下载新 URL/Debug/Microsoft.AnalysisServices/Microsoft.AnalysisServices.EXE。
日志:所有探测 URL 均已尝试并失败。
当我尝试将 9.0.242.0 版本的 dll 放入探测路径时,我得到的是:
日志:程序集下载成功。正在尝试设置文件:\Debug\Microsoft.AnalysisServices.dll
日志:进入从源代码运行设置阶段。
日志:程序集名称为:Microsoft.AnalysisServices,版本=9.0.242.0,文化=中性,PublicKeyToken=89845dcd8080cc91
警告:比较程序集名称导致不匹配:主要版本
错误:程序集引用与找到的程序集定义不匹配。
错误:无法完成程序集设置(hr = 0x80131040)。探测终止。
请注意,我还尝试将重定向更改为在 app.config 中使用“9.0.242.0”而不是“9.0.0.0”,但这没有用,尽管我认为这不会有任何区别。
据我了解,重定向绑定(bind)的全部意义在于使用与构建程序时所使用的版本不匹配的版本。我在这里完全错过了什么吗?我正在尝试做的事情是否可行,如果可行,是否知道为什么它不起作用?
干杯, 亚当
最佳答案
配置 xml 中的任何拼写错误都可能是一个原因。 Loader 就是看不到你的配置。 我也头疼了一个小时,直到我意识到错误是在模式名称中的字符“=”而不是“-”:
<assemblyBinding xmlns="urn:schemas=microsoft-com:asm.v1">
只需仔细检查所有属性名称和值。我猜“PublicKeyToken”应该是“publicKeyToken”
这应该有效:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.AnalysisServices" publicKeyToken="89845dcd8080cc91" />
<bindingRedirect oldVersion="10.0.0.0" newVersion="9.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
关于c# - 程序集绑定(bind)重定向不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3490327/