2009-08-05 4 views
1

Я создал консольное приложение, которое ссылается на версию 4.3.2.1 другой DLL, которую мы построили.C# верстка ссылок для консольного приложения

Он отлично работал и выполнял свою работу.

Затем построена версия 4.3.2.2 dll, и консольное приложение начинает умирать, потому что оно хочет видеть 4.3.2.1.

Есть ли способ сказать консольному приложению использовать 4.3.2.1 или новее? Методы, которые присутствуют в 4.3.2.1, также присутствуют в 4.3.2.2 и будут во всех последующих версиях dll.

ответ

4

Используйте <assemblyBinding> элемент app.config:

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="Foo.dll" 
           publicKeyToken="1234567890abcdef" 
           culture="neutral" /> 
      <bindingRedirect oldVersion="4.3.2.1" 
          newVersion="4.3.2.2"/> 
     </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

Смотрите также "Redirecting Assembly Versions" для получения дополнительной информации.

Предполагается, что вы не хотите перекомпилировать приложение, конечно, - если вы не возражаете перекомпилировать, то просто установить «Использовать определенную версию» в false должно быть хорошо.

+0

Спасибо, я попробую. Я бы предпочел не перекомпилировать утилиту, поэтому этот метод звучит так, как будто он будет идеальным. –

3

Выдвинуть окно свойств, когда у вас есть ссылка, выбранная для другой DLL. Убедитесь, что для свойства «Специфическая версия» установлено значение «false».

+0

Это нормально, если вы можете перестроить приложение, но в противном случае вы можете использовать app.config. Я считаю, что «Использовать конкретную версию» просто изменяет версию, на которую ссылается во время компиляции. –

0

Если имя dll изменяется. например. foo-4.3.2.1.dll, foo-4.3.2.2.dll, единственный способ - загрузить сборку во время выполнения.

Если имя сборки никогда не изменяется, вероятно, что для вашей ссылочной сборки включена «Конкретная версия». Отключение его должно устранить проблему.

Смежные вопросы