Есть ли доступная документация по файлам VBP (Visual Basic 6 Project)?

Есть ли доступная документация по ключам/значениям, используемым в файле VBP (проект Visual Basic)? Я пытаюсь лучше понять, как VBP обрабатывает ссылки внутри компании.

Пример строки:

Ссылка=*\G{BF204980-5E29-4945-AEB5-DDB284C568D3}#1.0#0#..\Project1.dll#Project1


person silentfrost    schedule 24.05.2011    source источник


Ответы (2)


Извините, но лучшее, что я нашел в сети, это просто обзор ( http://www.securitypronews.com/it/applicationdevelopment/spn-19-20020115VisualBasicProjectFilesStructure.html).

Также обратите внимание, что элементы управления ActiveX, используемые в VB Forms, будут иметь справочные записи в файле *.frm.

Я предполагаю, что вы хотите разрабатывать проекты ActiveX (будь то EXE, DLL или OCX). Если это ваша цель, вот мой совет:

(1) Узнайте о настройках двоичной совместимости.

(2) Хорошей практикой является добавление к исполняемому файлу ссылки суффикса .cmp, например Project1.dll.cmp. Когда вы посмотрите на двоичную совместимость, вы поймете, что я имею в виду.

(3) Разрабатывайте свои проекты VB6 ActiveX внутри VirtualPC; Разработка VB6 ActiveX сильно изнашивает реестр Windows.

(4) Путь к файлу DLL/EXE/OCX в настройке Reference= изменится, когда у VB будет причина найти объект ActiveX; он будет использовать все, что найдет в реестре (выигрывает тот, кто зарегистрировался последним). Кроме того, есть «Обновить элементы управления ActiveX», устанавливающие свойства проекта, которые могут вносить изменения.

(5) У вас практически нет контроля над GUID или библиотекой типов, которые будет генерировать VB6, за исключением той степени, которую вы можете достичь с помощью надлежащего управления двоичной совместимостью.


Вот что я знаю - из вашего примера выше,

BF204980-5E29-4945-AEB5-DDB284C568D3 указывает GUID объекта ActiveX.

1.0 указывает версию объекта ActiveX.

0 указывает на... Я не знаю.

..\Project1.dll — это (относительный) путь к тому месту, где находится (или находилась) ActiveX DLL.

Project1 — это (понятное) имя объекта ActiveX.

person rskar    schedule 24.05.2011
comment
Вся эта информация — хороший совет. ключ в том, чтобы скомпилировать вашу dll/ocx с отключенной совместимостью, затем скопировать этот файл в файл CMP и перекомпилировать, установив для совместимости двоичный файл, указав файл CMP в качестве эталонного файла (для совместимости). ЕСЛИ вы затем нарушите совместимость по какой-либо причине, VB предупредит вас. Однако имейте в виду, что вы +можете+ изменять сигнатуры методов или добавлять новые методы, технически не нарушая совместимость, но по-прежнему вызываете проблемы с совместимостью, поэтому будьте осторожны при изменении сигнатур методов или добавлении новых методов/свойств и т. д. - person DarinH; 24.05.2011
comment
Большое спасибо за ответ. - person silentfrost; 24.05.2011
comment
Хороший ответ. есть также руководство, хотя оно не объясняет эти ссылки msdn.microsoft.com/en-us/library/aa716294(v=VS.60).aspx - person MarkJ; 25.05.2011

Синтаксис ссылок описан в [MS-OVBA]:

LibidReference     = "*\" LibidReferenceKind LibidGuid 
                     "#" LibidMajorVersion "." LibidMinorVersion 
                     "#" LibidLcid 
                     "#" LibidPath 
                     "#" LibidRegName

<LibidReferenceKind>: 

%x47 (G) <LibidPath> specifies a Windows file path.

%x48 (H) <LibidPath> specifies a Macintosh path.    

<LibidGuid>: The GUID of the Automation type library.

<MajorVersion>: An unsigned integer that specifies the
major version of the Automation type library.

<LibidMinorVersion>: An unsigned integer that specifies the
minor version of the Automation type library.

<LibidLcid>: The LCID of the Automation type library.

<LibidPath>: The path to the Automation type library.

<LibidRegName>: The Automation type library’s display name
person Igor Skochinsky    schedule 10.07.2012
comment
‹MajorVersion› тоже в шестнадцатеричном формате (у меня есть DLL 1e.0) - person RoboJ1M; 16.07.2012