c# - 程序集绑定(bind)重定向不起作用

标签 c# .net binding assemblies reference

我正在尝试使用以下 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/

相关文章:

.net - 将属性设置应用于 Visual Studio 中项目中的所有类似控件

c# - 在 app.config <assemblyBinding>/<codeBase> 中配置任何较新程序集版本的 .NET 程序集绑定(bind)

c# - 仅在禁用项目上显示 WPF 工具提示

c# - 调试从非托管 C++ 调用的托管 .NET 代码

c# - WinRT 上下文中与 Async 的线程关联

c# - 如何在 ASP.NET C# 中从 Mailgun 接收 HTTP POST?

c# - WPF 窗口位置绑定(bind)

c# - 无法将日期时间格式转换为 00 :00:00 instead of 12:00:00?

C# 斐波那契函数返回错误

c# - 为什么当 this.DataContext = this 时绑定(bind)到我的类的实例不起作用