VSProjectExternal

Summary

References an external Visual Studio Project for integration with FASTBuild..

VSProjectExternal( alias ) // (optional) Alias { // Input Options .ExternalProjectPath // (mandatory) Path to project file .ProjectGuid // (only when avoiding external module) Project Guid .ProjectTypeGuid // (only when avoiding external module) Project Type Guid // Build Config Options .ProjectConfigs // (only when avoiding external module) List of project configurations (see below) // (default: Debug Win32, Release Win32, Debug X64, Release X64) } // ProjectConfigs - structs in the following format //------------------------------------------------- .ProjectConfig = [ .Platform // Platform (e.g. Win32, X64, PS3 etc.) .Config // Config (e.g. Debug, Release etc.) ]
Details

VSProjectExternal references an external Visual Studio Project (not generated by FASTBuild) of any type, for integration with the FASTBuild-generated VSSolution

Input Options

.ExternalProjectPath - String - (Required)

The location of the external, "foreign" .???proj file.

Example:
.ExternalProjectPath = 'Setup\Source\ExtProject\ExtProject.wixproj'

.ProjectGuid - String - (only if the value parsed by the external VSProjTypeExtractor should be preceeded)

The actual project GUID exactly as found in the external, "foreign" .???proj file.

Example:
.ProjectGuid = '{FA3D597E-38E6-4AE6-ACA1-22D2AF16F6A2}'

.ProjectTypeGuid - String - (Should not be given if using VSProjTypeExtractor)

This GUID identifies the project type and can be found in the registry, sometimes also in the project file itself inside the <ProjectTypeGuids> tag, but that is not guaranteed. Basically, every new type of project Visual Studio "learns" about after installing some new project type addon, stores this information in the system, so it is depending on the actual Visual Studio installation (especially its components), therefore if it's not available you can either consult the list your installation supports in the registry under HKCU\Software\Microsoft\VisualStudio\12.0_Config\Projects (or similar), or more simple, check what type GUID would be added in a solution file when interactively adding that kind of project to it.

Example:
.ProjectTypeGuid = '{930c7802-8a8c-48f9-8165-68863bccd9dd}' // WiX Toolset project type GUID

Build Config Options

Multiple project configurations can be specified. This allows for per-config settings to be a configured.

.ProjectConfigs - Array of ProjectConfig Structure(s) - (Optional)

A list of project configuration structures in the following format:

.ProjectConfig = [ // Basic Options .Platform // Platform (e.g. Win32, X64, PS3 etc.) .Config // Config (e.g. Debug, Release etc.) ]
Example:
.DebugConfig = [ .Platform = 'Win32' .Config = 'Debug' ] .ReleaseConfig = [ .Platform = 'Win32' .Config = 'Release' ] .ProjectConfigs = { .DebugConfig, .ReleaseConfig }
If no configurations are specified, the following defaults will be used:
.X86DebugConfig = [ .Platform = 'Win32' .Config = 'Debug' ] .X86ReleaseConfig = [ .Platform = 'Win32' .Config = 'Release' ] .X64DebugConfig = [ .Platform = 'X64' .Config = 'Debug' ] .X64ReleaseConfig = [ .Platform = 'X64' .Config = 'Release' ] .ProjectConfigs = { .X86DebugConfig, .X86ReleaseConfig, .X64DebugConfig, .X64ReleaseConfig }

If the VSProjTypeExtractor DLLs (Windows only) are present in the FASTBuild binary directory or reachable within the PATH environment, all of these Options except .ExternalProjectPath can be empty or not used at all, in order to let the VSProjTypeExtractor module to retrieve them. On the contrary, if despite of having the DLLs in place, some of these options have to be overridden, they should be provided in the BFF. If all are provided, the external project will no longer be parsed.