Hi,
I'm trying to make sure I understand how GUID works within VA and Plugins.
...
Thanks so much!
Start by reading the section of the VA Manual under Plugins (for the truly mad) called "VoiceAttack Plugin Requirements and Interface" - around page 191. This will get you up to speed on the requirements of plugins, and the "VoiceAttack Author Flags" section around page 250 regarding the use of these profile and command level flags.Regarding Profiles:1. Are Internal GUIDs in Voice Attack (if they exist) remaining STATIC for each .VAP (profile imported)?
Providing the author creates and indicates the GUID in their .vap prior to import?
If you are referring to InternalID, AuthorID, and ProductID, these are static. These values as set are fixed or constant and do not change during profile imports. These values are not set by VoiceAttack, but by profile developers through exporting the profile as XML expanded .vap, and manually edited into it.
2. If a Profile is created within Voice Attack itself, does/can Voice Attack automatically assign an Internal GUID?
If not, does it require first an export of the .vap profile, then user creates a GUID (updates .vap and re-imports)?
VoiceAttack never assigns the InternalID flag, or the ProductID or AuthorID flags, each exist for profile developers internal use only, and each require a GUID created by the user and manually edited into the (xml expanded) .vap file. When first created, you will see these flags as blank in the profile like this:
<AuthorID xsi:nil="true" />
<ProductID xsi:nil="true" />
<InternalID xsi:nil="true" />
All profiles do have an ID field which is a GUID set by VoiceAttack, yet this will be changed anytime a profile is exported.
Regarding Plugins:1. Does the Assembly Guid have any bearing and is it held anywhere within Voice Attack Proxy for retrieval?
By Assembly GUID, if you are referring to the GUID as circled in the picture below, as your IDE may see it for your plugin, this is not used by VoiceAttack and so while you may be able to programmatically access this GUID for a plugin (if needed), it is not presented by any vaProxy attributes afaik.
...but if you are referring to the required GUID for the plugin to be identified by VoiceAttack, this is required and has bearing in that it is how VoiceAttack identifies a plugin - any other plugins with this same GUID would be ignored as "already loaded".
/// <summary>
/// Method to return a unique ID generated by the author so VoiceAttack can identify and use the plugin.
/// </summary>
/// <returns>The GUID of this plugin.</returns>
public static Guid VA_Id()
{
return new Guid("{1A2B3C4D-5E6F7A8B-901C2D3E-4F5A6B7C}");
}
I am personally unaware of any vaProxy attribute or method to retrieve the `Guid VA_Id()` of plugins.
2. Is it a requirement to create an 'Assembly GUID' for plugin .dll creation?
If you are referring to the image above, the GUID in the Assembly Properties of this plugin (class library) in your IDE, this is not required but is recommended - VoiceAttack doesn't care about this, though.
If you are referring to the `Guid VA_Id()` that must be set in the plugin code as a public static method, this is required and must be unique to your plugin, and VoiceAttack uses it as the primary means to differentiate your plugin from other plugins.
General:1. If all Internal, Author, Product and Assembly GUIDs are missing, how is this treated within Voice Attack?
If the profile flags for InternalID, AuthorID, or ProductID are not set, these will simply be unavailable in the corresponding tokens or vaProxy attributes. The InternalID has special function, in that it can be used in an undocumented method for certain plugins to overwrite an existing profile with the same InternalID rather than importing a second profile of the same name ending in a number (such as "-1").
The Assembly GUID is not a profile flag, and again not sure if you mean in the IDE for the plugin or the required `Guid VA_Id()`, the former is ignored by VA and the latter is required for every plugin.