У меня есть устаревшая VB6 COM DLL, которая включена в качестве ссылки в проект .NET. Мой процесс сборки вручную выглядит так:
- Сборка VB6 DLL
- Скопируйте VB6 DLL в справочный каталог
- Зарегистрируйте VB6 DLL с
regsvr32
- В проекте .NET удалите старую ссылку
- Добавить ссылку на новую VB6 DLL (просмотреть)
- Установите для свойства Isolated ссылки значение True.
- Построить .NET-решение
Я занимаюсь автоматизацией этой процедуры. Шаги с 4 по 6 вызывают у меня проблемы. Когда я регистрирую новую VB6 COM DLL, старая ссылка в проекте .NET недействительна. Заглянув в файл проекта, я вижу следующее:
<ItemGroup>
<COMReference Include="DllName">
<Guid>{65CDCC83-E707-4AA3-8940-FE79F265D570}</Guid>
<VersionMajor>50</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>True</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
</ItemGroup>
Я считаю, что мне нужно автоматически перезаписать свойство Guid
новым clsid COM, и мне может потребоваться изменить свойства VersionMajor
и VersionMinor
.
К сожалению, это не похоже на свойства файла VB6 COM DLL. Где я могу получить эту информацию и / или иду ли я по правильному пути? Есть ли какой-нибудь инструмент или опция, которая сделает это за меня автоматически?
Изменить
Ошибка сборки, которую я получаю, если не обновляю ссылку, - это error MSB3179.
Фактический текст сообщения об ошибке:
c: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets (2580,9): ошибка MSB3179: проблема с выделением ссылки COM «DllName»: для этого компонента не обнаружены зарегистрированные классы. [путь / к / projfile.vbproj]
... где «DllName» - это имя моей библиотеки DLL, а «path / to / projfile.vbproj» - это полный путь к файлу проекта со ссылкой на COM.