Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

1) Two Translation Options added to the prototype script.

 <Select BuildFile="local" />

BuildFile="local" tells the translator to generate stub files for COM API references.

2) The Library setting is different.

INTEROP   <Select Library="%InteropFolder%" />
---
PROTOTYPE <Select Library="%GenExternFolder%" />

The Library setting tells gmBasic how to author HintPath settings in the target projects.

3) Two registry commands are added to the prototype script.

<Registry Type="idfstatus" Source="stdole2.tlb" Target="migrate" />
<Registry Type="idfstatus" Source="MSVBVM60_3.dll" Target="migrate" />

Stdole and VBRUN are special cases of COM libraries that are rarely needed even though they explicitly show up as references in VBPs files. These two commands tell gmBasic to suppress generating and referencing the prototype assemblies.

VB6 Interop vs. ASP Interop

Comparing the following files:

  • tran.vbp_std.xml: For VB6 Migrations using the Interoped Externals Strategy
  • tran.asp_std.xml: For ASP Migrations using the Interoped Externals Strategy

shows differences in seven sections.

1) The DeployLocation for a website unit is computed differently than for a VB6 unit.

VB6 <Select DeployLocation="%NetProjFolder%" />
---
ASP <select DeployLocation="%DeployFolder%" />


2) The Virtual Root is needed for website processing so a select to set it is added

<select VirtualRoot ="%VirtualRoot%" />

3) Web Application Project Files require special GUIDS to get along with Visual Studio. They are set using these registry commands in the ASP script.

Code Block
languagehtml/xml
<if lang="csh">
   <Registry type="guid" source="Project" target="{7EE74E01-07B7-4C4F-B053-895BB67A3A51}" />
   <Registry type="guid" source="ProjectType1" target="{349C5851-65DF-11DA-9384-00065B846F21}" />
   <Registry type="guid" source="ProjectType2" target="{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" />
   <Registry type="guid" source="Flavor" target="{349C5851-65DF-11DA-9384-00065B846F21}" />
</if>
<if lang="vbn">
   <Registry type="guid" source="Project" target="{CE8BB43C-9A4F-4900-AFD0-A4C18D1C30B1}" />
   <Registry type="guid" source="ProjectType1" target="{349C5851-65DF-11DA-9384-00065B846F21}" />
   <Registry type="guid" source="ProjectType2" target="{F184B08F-C81C-45F6-A57F-5ABD9991F28F}" />
   <Registry type="guid" source="Flavor" target="{349C5851-65DF-11DA-9384-00065B846F21}" />
</if>


4) Unlike VBP files, Websites do not explicitly declare all of their COM dependencies; so, the dependencies must be determined by analyzing the site. Once this is done the references can be inserted by gmStudio or by hand. The %ReferenceList% place holder in the ASP template facilitates this.

<!-- PLACE COM REFERENCES HERE -->
%ReferenceList%

5) It is somewhat common that ProgIds in CreateObject statements use non-standard naming conventions. The file Registry.xml helps gmBasic resolve non-standard ProgIds used by various third party components.


<Include Filename="%AppRoot%\support\lang\registry.xml"/>

6) Slightly different compilation commands are used for VB6 and ASP.


VB6 <Compile Project="%SrcPath%" />
---
ASP <Compile PageSlice="%SrcPath%" />

7) A name for the web application project and its default namespace must be explicitly provided to gmBasic since it cannot be determined from the source code. This is done using the name attribute of the Author command.


VB6 <Author />
---
ASP <Author name="%MigName%" />