Перенаправление сборки GAC для нескольких.dll

Я пытаюсь перенаправить конкретный .dllдавайте назовем это MyAssembly.dll, Эта сборка имеет две версии:

MyAssembly.dll version 1.0.0.0

а также

MyAssembly.dll version 1.1.0.0

Я хочу, чтобы эти две сборки перенаправили на третью версию: 1.2.0.0, Для этого я написал это .config файл для построения Publisher Policy для применения в GAC:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
            <assemblyIdentity name="MyAssembly" publicKeyToken="myPublicKeyToken" />
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.2.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

С этим я создаю соответствующий .config файл для генерации политики. Но моя проблема возникает, когда я хочу создать Policy,

Примечание перед следующим шагом: управление версиями сборки работает следующим образом:

<major version>.<minor version>.<build number>.<revision>

В первый раз, когда я захотел создать Политику, я понял, что если версия сборки, которую я хочу перенаправить, это: 1.0.0.0 Я должен был создать политику, которая соответствует этому:

Policy.<majorversion>.<minorversion>.<AssemblyName>.dll

С этим я могу перенаправить любой MyAssembly.dll от 1.0.* до версии 1.1.

Но как мне создать эту политику, если я хочу перенаправить более одной сборки, как я объяснил выше? Как должна выглядеть моя политика?

Если у меня есть две сборки:

1.0.0.0 - 1.1.0.0

Как мне построить PublisherPolicy?

1 ответ

Решение

Из-за этой статьи мне пришлось создать одну Политику для каждой комбинации MajorVersion.MinorVersion моей сборки. Поэтому мне пришлось создать две политики:

  • Один, чтобы иметь возможность перенаправить с 1.0.0.0 до 1.2.0.0
  • И еще один для перенаправления с 1.1.0.0 на 1.2.0.0

Это решение работает, но если кто-нибудь знает более эффективный способ сделать это, я буду очень признателен.

Другие вопросы по тегам