Как избавиться от зависимости от версии сборки в dll?
От: Алек Россия https://vk.com/vaneyev
Дата: 15.10.09 16:24
Оценка:
Разрабатываю xxx.dll c COM-объектами, которая ссылается на другие сборки.
При регистрации xxx.dll на компе, где стоят другие версии сборок, regasm ругается.
Как это обойти?
Re: Как избавиться от зависимости от версии сборки в dll?
От: vmpire Россия  
Дата: 15.10.09 17:18
Оценка:
Здравствуйте, Алек, Вы писали:

А>Разрабатываю xxx.dll c COM-объектами, которая ссылается на другие сборки.

А>При регистрации xxx.dll на компе, где стоят другие версии сборок, regasm ругается.
А>Как это обойти?
Для начала, решите, что Вы хотите получить.
Если нужно, чтобы COM использовал последнюю версию сборки — просто удаляйте все старые перед регистрацией новой.
Если нужно, чтобы жили все одновременно — тогда меняйте guid COM-объекта, иначе как COM угадает, какую версию брать?
Re[2]: Как избавиться от зависимости от версии сборки в dll?
От: Алек Россия https://vk.com/vaneyev
Дата: 15.10.09 17:35
Оценка:
Здравствуйте, vmpire, Вы писали:

V>Для начала, решите, что Вы хотите получить.


Может я не достаточно хорошо объяснил...
Я разрабатываю x.dll, которая использует y.dll и z.dll версии 9.1.x.x.
Теперь я хочу установить x.dll на компьютер, где стоят y.dll и z.dll версии 9.3.x.x. Regasm говорит, что нету у.dll версии 9.1.x.x. Удалять старые версии y.dll и z.dll я не могу.
Re[3]: Как избавиться от зависимости от версии сборки в dll?
От: vmpire Россия  
Дата: 16.10.09 09:11
Оценка:
Здравствуйте, Алек, Вы писали:

А>Может я не достаточно хорошо объяснил...

А>Я разрабатываю x.dll, которая использует y.dll и z.dll версии 9.1.x.x.
А>Теперь я хочу установить x.dll на компьютер, где стоят y.dll и z.dll версии 9.3.x.x. Regasm говорит, что нету у.dll версии 9.1.x.x. Удалять старые версии y.dll и z.dll я не могу.
Попробуйте прописать <bindingRedirect> для y.dll и z.dll с версии 9.1.x.x на 9.3.x.x в конфиге приложения. Если не поможет — попробуйте прописать его в machine.config.
Re[4]: Как избавиться от зависимости от версии сборки в dll?
От: Алек Россия https://vk.com/vaneyev
Дата: 16.10.09 11:56
Оценка:
Здравствуйте, vmpire, Вы писали:

V>Попробуйте прописать <bindingRedirect> для y.dll и z.dll с версии 9.1.x.x на 9.3.x.x в конфиге приложения. Если не поможет — попробуйте прописать его в machine.config.


Написал свое приложение для регистрации x.dll, у которого указал <bindingRedirect>. Теперь COM-объекты из x.dll регистрируются. Но основное приложение, которое использует COM-объекты из x.dll не хочет запускать эти объекты. Основное приложение не является .Net приложением. Правка <bindingRedirect> в конфиге основного приложения и в mashine.config не помогает.
Re[4]: Как избавиться от зависимости от версии сборки в dll?
От: Алек Россия https://vk.com/vaneyev
Дата: 16.10.09 12:36
Оценка:
Здравствуйте, vmpire, Вы писали:

V>Попробуйте прописать <bindingRedirect> для y.dll и z.dll с версии 9.1.x.x на 9.3.x.x в конфиге приложения. Если не поможет — попробуйте прописать его в machine.config.


Заработало следующим образом

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="ESRI.ArcGIS.Framework"
                          publicKeyToken="8fc3cc631e44ad86"
                          culture="" />
                <bindingRedirect  oldVersion="9.0.0.535-9.3.0.1770"
                          newVersion="9.3.0.1770" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="ESRI.ArcGIS.SystemUI"
                          publicKeyToken="8fc3cc631e44ad86"
                          culture="" />
                <bindingRedirect  oldVersion="9.0.0.535-9.3.0.1770"
                          newVersion="9.3.0.1770" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="ESRI.ArcGIS.Utility"
                          publicKeyToken="8fc3cc631e44ad86"
                          culture="" />
                <bindingRedirect  oldVersion="9.0.0.535-9.3.0.1770"
                          newVersion="9.3.0.1770" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

Спасибо за участие!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.