C # версия версий ссылок для консольного приложения - PullRequest
2 голосов
/ 05 августа 2009

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

Он работал нормально и сделал свое дело.

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

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

Ответы [ 3 ]

5 голосов
/ 05 августа 2009

Используйте элемент <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>

См. Также "Перенаправление версий сборки" для получения дополнительной информации.

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

3 голосов
/ 05 августа 2009

Поднимите окно свойств, когда у вас есть ссылка, выбранная на другую DLL. Убедитесь, что для свойства «Определенная версия» установлено значение false.

0 голосов
/ 05 августа 2009

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

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

...