Поддерживать правильную версию для COM dll, на который есть ссылка в проекте .NET - PullRequest
1 голос
/ 03 сентября 2008

Я хочу сослаться на COM DLL в проекте .NET, но я также хочу убедиться, что созданная interop DLL будет иметь правильную версию (чтобы патчи знали, когда нужно изменить DLL).

Если я использую TlbImp, я могу указать требуемую версию с флагом /asmversion, но когда я добавляю ее непосредственно из Visual Studio, она получает версию, которая не имеет ничего общего с исходной версией COM DLL.

Я пытался изменить версию в .vcproj файле

<ItemGroup>
    <COMReference Include="MYDLLLib">
        <Guid>{459F8813-D74D-DEAD-BEEF-00CAFEBABEA5}</Guid>
        <!-- I changed this -->
        <VersionMajor>1</VersionMajor> 
        <!-- This too -->   
        <VersionMinor>0</VersionMinor> 
        <Lcid>0</Lcid>
        <WrapperTool>tlbimp</WrapperTool>
        <Isolated>False</Isolated>
    </COMReference>
</ItemGroup>

Но затем проект не удалось собрать со следующей ошибкой:

ошибка CS0246: не удалось найти тип или имя пространства имен 'MYDLLLib' (отсутствует директива using или ссылка на сборку?)

Есть ли способ сделать это, не создавая все мои ссылки на COM с TlbImp заранее?

Если ответ да , есть ли способ указать номер сборки в дополнение к основной и вспомогательной версиям? (например, 1.2. 42 .0)

1 Ответ

1 голос
/ 03 сентября 2008

Guid ссылается на Guid для TypeLib, а не на DLL напрямую. Номера версий относятся к версии TypeLib, а не к DLL.

Номер версии будет взят из вашего файла idl, и я считаю, что он поддерживает только основную и вспомогательную версию, а не версию для сборки. Меняется ли эта версия при изменении библиотеки типов?

Номера версий появятся в реестре под:

HKEY_CLASSES_ROOT\Typelib\{typelib uuid}\Major.Minor

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...