2009-09-04 4 views
3

Мне нужно добавить зависимость от конкретной версии GDIPlus. Это версия GDI +, что я хочу:WinSxS: Как принять зависимость от конкретной версии gdiplus.dll?

alt text http://i31.tinypic.com/2qiv57t.jpg

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

Я добавил манифест сборки на мой исполняемый файл, определяющий мою Зависимость от от версии GdiPlus:

<dependency> 
    <dependentAssembly> 
     <assemblyIdentity 
      type="win32" name="Microsoft.Windows.GdiPlus" 
      pubicKeyToken="6595b64144ccf1df" 
      version="5.1.3102.2180" processorArchitecture="x86" 
      language="*" /> 
    </dependentAssembly> 
</dependency> 

За исключением, когда я запускаю мое приложение, фьюжн загрузчик Windows' дает мне некоторую другую версию gdiplus.dll с бок-о-бок папку, которую я могу увидеть в Process Explorer:

alt text http://i29.tinypic.com/hrwitz.jpg

Это дает мне версию 5.02.600 2.18005, а не 5.1.3102.2180.

Итак, вопрос в следующем: как я могу зависеть от конкретной версии DLL Windows?

+1

Я ошибочно написала «зависимость», я справлюсь с этим.Но я всегда использую строчные буквы «i», когда говорю о себе. –

+0

Если вы проголосуете, было бы полезно знать, почему. Является ли этот вопрос «неясным или не полезным»? –

ответ

2

Ваша «проблема», таким образом, что оно есть, что есть установленный файл политики, который определяет, что запросы на 5.1.3102.2180 могут быть перенаправлены на 5.02.6002.18005

Это, как правило, хорошая вещь. он позволяет приложениям указывать версию, в которой они были созданы, в своем манифесте, но когда внедряются критические исправления безопасности, ОС может перенаправлять приложения на совместимые версии.

Итак, что произойдет, ваше приложение собирается связать GDI + 5.1 с любым ПК, на котором установлен только 5.1. но на любых ПК с 5.2 GDI + вы будете перенаправлены на это.

Если у вас есть честная причина, почему вы хотите использовать 5.1, даже если доступно 5.2 ... Я думаю, вы можете использовать файл конфигурации приложения для управления этим.

Создайте файл с именем, yourapp.exe.config - если модуль в вашем приложении Thats импорта GDI + является DLL, то это было бы thedll.dll.2.config

Я не уверен, как структурировать bindingRedirect. то есть с учетом перенаправления файлов политик, я не уверен, что вам нужно перенаправить старую версию обратно к себе или новую версию обратно в старую версию. или что. могут потребоваться некоторые проб и ошибок.

Данные в файле .config выглядят почти так же, как данные в файле манифеста. Что-то вроде этого (которое практически точно имитирует содержимое файла политики, установленного в winsxs, который выполняет перенаправление, которое вы не хотите).

<configuration> 
    <windows> 
    <assemblyBinding xmlns=...> 
     <dependentAssembly name="GdiPlus...> 
     <bindingRedirect oldVersion="5.1.x.x" newVersion="5.1.x.x"/> 

Чтобы сделать выбор "oldVersion" проще, поскольку он поддерживает синтаксис диапазона. так

oldVersion="5.0.0.0-5.3.0.0" 

будет простым способом гарантировать, что целый ряд версий GdiPlus попадет к конкретной версии.

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

  • Нет связанных вопросов^_^