Я пытаюсь настроить перенаправление связывания сборки, используя следующий файл app.config:
<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>
Я запускаю программу на машине с версией 9.0.242.0 в GAC с указанным токеном открытого ключа. CLR, похоже, даже не пытается перенаправить привязку для использования этой версии.
Вот что я получаю в fuslogvw.exe:
LOG: This bind starts in default load context.
LOG: Using application configuration file: \Debug\AssemblyRedirectPOC.exe.Config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Post-policy reference: Microsoft.AnalysisServices, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL /Debug/Microsoft.AnalysisServices.DLL.
LOG: Attempting download of new URL /Debug/Microsoft.AnalysisServices/Microsoft.AnalysisServices.DLL.
LOG: Attempting download of new URL /Debug/Microsoft.AnalysisServices.EXE.
LOG: Attempting download of new URL /Debug/Microsoft.AnalysisServices/Microsoft.AnalysisServices.EXE.
LOG: All probing URLs attempted and failed.
Когда я попытался поместить dll 9.0.242.0 в путь зонда, я получаю это вместо:
LOG: Assembly download was successful. Attempting setup of file: \Debug\Microsoft.AnalysisServices.dll
LOG: Entering run-from-source setup phase.
LOG: Assembly Name is: Microsoft.AnalysisServices, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91
WRN: Comparing the assembly name resulted in the mismatch: Major Version
ERR: The assembly reference did not match the assembly definition found.
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
Обратите внимание, что я также попытался изменить перенаправление на использование "9.0.242.0" вместо "9.0.0.0" в app.config, и это не сработало, хотя я не думаю, что это должно иметь значение.
Из того, что я понимаю, вся суть перенаправления привязки заключается в использовании версии, которая не соответствует той, с которой была построена программа. Я что-то здесь совсем не вижу? Я пытаюсь сделать то, что я пытаюсь сделать, и если да, то какая идея, почему он не работает?
Cheers, Адам