Почему в моем приложении всегда используется последняя версия GAC, а не указанная версия?

Контекст

У меня есть две разные версии сборки, установленные в GAC, версия 1.0 и версия 2.0. Я сделал приложение, которое ссылается на 1.0 как на конкретную версию.

Проблема

Когда я запускаю свое приложение, оно всегда загружает версию 2.0, тогда как приложение конкретно ссылается на версию 1.0.

Вопрос

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

Мне не кажется, что это как-то связано с перенаправлением привязки, поскольку мое приложение даже не знало о версии 2.0, когда я его создавало, и что метаданные ссылки «Специфическая версия» установлены на true.

Спасибо.


Изменить:

Сборка, на которую я ссылаюсь, на самом деле является Oracle.DataAccess из пакета ODAC. Я заметил, что другие сборки с именем Policy.x.xxx.Oracle.DataAccess были опубликованы в GAC.


Редактировать 2:

Изучив политику Oracle.DataAccess, я обнаружил конфигурацию, определяющую перенаправление привязки:


   
      
        
          
            
        
      
   

Несмотря на то, что я добавил обратное перенаправление привязки в конфигурацию моего приложения, политика в GAC, похоже, имеет приоритет. Я нашел статью MSDN, рассматривающую эту тему и предлагающую игнорировать политику с этой конфигурацией:


Но это все равно не работает...


Правка 3:

Я попытался удалить политику из GAC и перезагрузил свою машину. Это наконец сработало. Это не похоже на разработку удобного решения, но эта политика сломала одно из моих приложений, что означает, что отключение политики в моем случае является правильным решением.


Окончательное редактирование:

Игорь дал мне правильный ответ. Все, что мне нужно было сделать, чтобы обойти эти политики, это использовать настройку publisherPolicyв правом разделе конфигурации:


  
    
      
      
    
  

8
задан Ucodia 22 May 2012 в 13:50
поделиться