blob: 9091a5e088e9ce7cf0f30015afe428539adbbd0a [file] [log] [blame]
#region Apache License, Version 2.0
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
/// Author: Leopoldo Lee Agdeppa III
namespace NPanday.ProjectImporter.Parser.VisualStudioProjectTypes
{
public class VisualStudioProjectType
{
static Dictionary<string, VisualStudioProjectTypeEnum> __visualStudioProjectTypes;
static Dictionary<VisualStudioProjectTypeEnum, string> __visualStudioProjectTypeGuids;
static Dictionary<string, bool> __visualStudioProjectTypeSupported; // TODO: should remove, and just rely on the converter registrations
static VisualStudioProjectType()
{
__visualStudioProjectTypes = new Dictionary<string, VisualStudioProjectTypeEnum>();
__visualStudioProjectTypeGuids = new Dictionary<VisualStudioProjectTypeEnum, string>();
__visualStudioProjectTypeSupported = new Dictionary<string, bool>();
//Windows (C#) {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
__visualStudioProjectTypes.Add("FAE04EC0-301F-11D3-BF4B-00C04F79EFBC", VisualStudioProjectTypeEnum.Windows__CSharp);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Windows__CSharp, "FAE04EC0-301F-11D3-BF4B-00C04F79EFBC");
__visualStudioProjectTypeSupported.Add("FAE04EC0-301F-11D3-BF4B-00C04F79EFBC", true);
//Windows (VB.NET) {F184B08F-C81C-45F6-A57F-5ABD9991F28F}
__visualStudioProjectTypes.Add("F184B08F-C81C-45F6-A57F-5ABD9991F28F", VisualStudioProjectTypeEnum.Windows__VbDotNet);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Windows__VbDotNet, "F184B08F-C81C-45F6-A57F-5ABD9991F28F");
__visualStudioProjectTypeSupported.Add("F184B08F-C81C-45F6-A57F-5ABD9991F28F", true);
//Windows (Visual C++) {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
__visualStudioProjectTypes.Add("8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942", VisualStudioProjectTypeEnum.Windows__VCpp);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Windows__VCpp, "8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942");
__visualStudioProjectTypeSupported.Add("8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942", false);
//Web Application {349C5851-65DF-11DA-9384-00065B846F21}
__visualStudioProjectTypes.Add("349C5851-65DF-11DA-9384-00065B846F21", VisualStudioProjectTypeEnum.Web_Application);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Web_Application, "349C5851-65DF-11DA-9384-00065B846F21");
__visualStudioProjectTypeSupported.Add("349C5851-65DF-11DA-9384-00065B846F21", true);
//Web Site {E24C65DC-7377-472B-9ABA-BC803B73C61A}
__visualStudioProjectTypes.Add("E24C65DC-7377-472B-9ABA-BC803B73C61A", VisualStudioProjectTypeEnum.Web_Site);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Web_Site, "E24C65DC-7377-472B-9ABA-BC803B73C61A");
__visualStudioProjectTypeSupported.Add("E24C65DC-7377-472B-9ABA-BC803B73C61A", true);
//Distributed System {F135691A-BF7E-435D-8960-F99683D2D49C}
__visualStudioProjectTypes.Add("F135691A-BF7E-435D-8960-F99683D2D49C", VisualStudioProjectTypeEnum.Distributed_System);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Distributed_System, "F135691A-BF7E-435D-8960-F99683D2D49C");
__visualStudioProjectTypeSupported.Add("F135691A-BF7E-435D-8960-F99683D2D49C", false);
//Windows Communication Foundation (WCF) {3D9AD99F-2412-4246-B90B-4EAA41C64699}
__visualStudioProjectTypes.Add("3D9AD99F-2412-4246-B90B-4EAA41C64699", VisualStudioProjectTypeEnum.Windows_Communication_Foundation__WCF);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Windows_Communication_Foundation__WCF, "3D9AD99F-2412-4246-B90B-4EAA41C64699");
__visualStudioProjectTypeSupported.Add("3D9AD99F-2412-4246-B90B-4EAA41C64699", true);
//Windows Presentation Foundation (WPF) {60DC8134-EBA5-43B8-BCC9-BB4BC16C2548}
__visualStudioProjectTypes.Add("60DC8134-EBA5-43B8-BCC9-BB4BC16C2548", VisualStudioProjectTypeEnum.Windows_Presentation_Foundation__WPF);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Windows_Presentation_Foundation__WPF, "60DC8134-EBA5-43B8-BCC9-BB4BC16C2548");
__visualStudioProjectTypeSupported.Add("60DC8134-EBA5-43B8-BCC9-BB4BC16C2548", true);
//Visual Database Tools {C252FEB5-A946-4202-B1D4-9916A0590387}
__visualStudioProjectTypes.Add("C252FEB5-A946-4202-B1D4-9916A0590387", VisualStudioProjectTypeEnum.Visual_Database_Tools);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Visual_Database_Tools, "C252FEB5-A946-4202-B1D4-9916A0590387");
__visualStudioProjectTypeSupported.Add("C252FEB5-A946-4202-B1D4-9916A0590387", false);
//Database {A9ACE9BB-CECE-4E62-9AA4-C7E7C5BD2124}
__visualStudioProjectTypes.Add("A9ACE9BB-CECE-4E62-9AA4-C7E7C5BD2124", VisualStudioProjectTypeEnum.Database);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Database, "A9ACE9BB-CECE-4E62-9AA4-C7E7C5BD2124");
__visualStudioProjectTypeSupported.Add("A9ACE9BB-CECE-4E62-9AA4-C7E7C5BD2124", false);
//Database (other project types) {4F174C21-8C12-11D0-8340-0000F80270F8}
__visualStudioProjectTypes.Add("4F174C21-8C12-11D0-8340-0000F80270F8", VisualStudioProjectTypeEnum.Database__other_project_types);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Database__other_project_types, "4F174C21-8C12-11D0-8340-0000F80270F8");
__visualStudioProjectTypeSupported.Add("4F174C21-8C12-11D0-8340-0000F80270F8", false);
//Test {3AC096D0-A1C2-E12C-1390-A8335801FDAB}
__visualStudioProjectTypes.Add("3AC096D0-A1C2-E12C-1390-A8335801FDAB", VisualStudioProjectTypeEnum.Test);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Test, "3AC096D0-A1C2-E12C-1390-A8335801FDAB");
__visualStudioProjectTypeSupported.Add("3AC096D0-A1C2-E12C-1390-A8335801FDAB", true);
//Legacy (2003) Smart Device (C#) {20D4826A-C6FA-45DB-90F4-C717570B9F32}
__visualStudioProjectTypes.Add("20D4826A-C6FA-45DB-90F4-C717570B9F32", VisualStudioProjectTypeEnum.Legacy__2003_Smart_Device__CSharp);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Legacy__2003_Smart_Device__CSharp, "20D4826A-C6FA-45DB-90F4-C717570B9F32");
__visualStudioProjectTypeSupported.Add("20D4826A-C6FA-45DB-90F4-C717570B9F32", false);
//Legacy (2003) Smart Device (VB.NET) {CB4CE8C6-1BDB-4DC7-A4D3-65A1999772F8}
__visualStudioProjectTypes.Add("CB4CE8C6-1BDB-4DC7-A4D3-65A1999772F8", VisualStudioProjectTypeEnum.Legacy__2003_Smart_Device__VbDotNet);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Legacy__2003_Smart_Device__VbDotNet, "CB4CE8C6-1BDB-4DC7-A4D3-65A1999772F8");
__visualStudioProjectTypeSupported.Add("CB4CE8C6-1BDB-4DC7-A4D3-65A1999772F8", false);
//Smart Device (C#) {4D628B5B-2FBC-4AA6-8C16-197242AEB884}
__visualStudioProjectTypes.Add("4D628B5B-2FBC-4AA6-8C16-197242AEB884", VisualStudioProjectTypeEnum.Smart_Device__CSharp);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Smart_Device__CSharp, "4D628B5B-2FBC-4AA6-8C16-197242AEB884");
__visualStudioProjectTypeSupported.Add("4D628B5B-2FBC-4AA6-8C16-197242AEB884", false);
//Smart Device (VB.NET) {68B1623D-7FB9-47D8-8664-7ECEA3297D4F}
__visualStudioProjectTypes.Add("68B1623D-7FB9-47D8-8664-7ECEA3297D4F", VisualStudioProjectTypeEnum.Smart_Device__VbDotNet);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Smart_Device__VbDotNet, "68B1623D-7FB9-47D8-8664-7ECEA3297D4F");
__visualStudioProjectTypeSupported.Add("68B1623D-7FB9-47D8-8664-7ECEA3297D4F", false);
//Workflow (C#) {14822709-B5A1-4724-98CA-57A101D1B079}
__visualStudioProjectTypes.Add("14822709-B5A1-4724-98CA-57A101D1B079", VisualStudioProjectTypeEnum.Workflow__CSharp);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Workflow__CSharp, "14822709-B5A1-4724-98CA-57A101D1B079");
__visualStudioProjectTypeSupported.Add("14822709-B5A1-4724-98CA-57A101D1B079", false);
//Workflow (VB.NET) {D59BE175-2ED0-4C54-BE3D-CDAA9F3214C8}
__visualStudioProjectTypes.Add("D59BE175-2ED0-4C54-BE3D-CDAA9F3214C8", VisualStudioProjectTypeEnum.Workflow__VbDotNet);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Workflow__VbDotNet, "D59BE175-2ED0-4C54-BE3D-CDAA9F3214C8");
__visualStudioProjectTypeSupported.Add("D59BE175-2ED0-4C54-BE3D-CDAA9F3214C8", false);
//Deployment Merge Module {06A35CCD-C46D-44D5-987B-CF40FF872267}
__visualStudioProjectTypes.Add("06A35CCD-C46D-44D5-987B-CF40FF872267", VisualStudioProjectTypeEnum.Deployment_Merge_Module);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Deployment_Merge_Module, "06A35CCD-C46D-44D5-987B-CF40FF872267");
__visualStudioProjectTypeSupported.Add("06A35CCD-C46D-44D5-987B-CF40FF872267", false);
//Deployment Cab {3EA9E505-35AC-4774-B492-AD1749C4943A}
__visualStudioProjectTypes.Add("3EA9E505-35AC-4774-B492-AD1749C4943A", VisualStudioProjectTypeEnum.Deployment_Cab);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Deployment_Cab, "3EA9E505-35AC-4774-B492-AD1749C4943A");
__visualStudioProjectTypeSupported.Add("3EA9E505-35AC-4774-B492-AD1749C4943A", false);
//Deployment Setup {978C614F-708E-4E1A-B201-565925725DBA}
__visualStudioProjectTypes.Add("978C614F-708E-4E1A-B201-565925725DBA", VisualStudioProjectTypeEnum.Deployment_Setup);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Deployment_Setup, "978C614F-708E-4E1A-B201-565925725DBA");
__visualStudioProjectTypeSupported.Add("978C614F-708E-4E1A-B201-565925725DBA", false);
//Deployment Smart Device Cab {AB322303-2255-48EF-A496-5904EB18DA55}
__visualStudioProjectTypes.Add("AB322303-2255-48EF-A496-5904EB18DA55", VisualStudioProjectTypeEnum.Deployment_Smart_Device_Cab);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Deployment_Smart_Device_Cab, "AB322303-2255-48EF-A496-5904EB18DA55");
__visualStudioProjectTypeSupported.Add("AB322303-2255-48EF-A496-5904EB18DA55", false);
//Visual Studio Tools for Applications (VSTA) {A860303F-1F3F-4691-B57E-529FC101A107}
__visualStudioProjectTypes.Add("A860303F-1F3F-4691-B57E-529FC101A107", VisualStudioProjectTypeEnum.Visual_Studio_Tools_for_Applications__VSTA);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Visual_Studio_Tools_for_Applications__VSTA, "A860303F-1F3F-4691-B57E-529FC101A107");
__visualStudioProjectTypeSupported.Add("A860303F-1F3F-4691-B57E-529FC101A107", false);
//Visual Studio Tools for Office (VSTO) {BAA0C2D2-18E2-41B9-852F-F413020CAA33}
__visualStudioProjectTypes.Add("BAA0C2D2-18E2-41B9-852F-F413020CAA33", VisualStudioProjectTypeEnum.Visual_Studio_Tools_for_Office__VSTO);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Visual_Studio_Tools_for_Office__VSTO, "BAA0C2D2-18E2-41B9-852F-F413020CAA33");
__visualStudioProjectTypeSupported.Add("BAA0C2D2-18E2-41B9-852F-F413020CAA33", false);
//SharePoint Workflow {F8810EC1-6754-47FC-A15F-DFABD2E3FA90}
__visualStudioProjectTypes.Add("F8810EC1-6754-47FC-A15F-DFABD2E3FA90", VisualStudioProjectTypeEnum.SharePoint_Workflow);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.SharePoint_Workflow, "F8810EC1-6754-47FC-A15F-DFABD2E3FA90");
__visualStudioProjectTypeSupported.Add("F8810EC1-6754-47FC-A15F-DFABD2E3FA90", false);
//Microsoft Installer {54435603-DBB4-11D2-8724-00A0C9A8B90C}
__visualStudioProjectTypes.Add("54435603-DBB4-11D2-8724-00A0C9A8B90C", VisualStudioProjectTypeEnum.Microsoft_Installer);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Microsoft_Installer, "54435603-DBB4-11D2-8724-00A0C9A8B90C");
__visualStudioProjectTypeSupported.Add("54435603-DBB4-11D2-8724-00A0C9A8B90C", false);
//Website_MVC {603C0E0B-DB56-11DC-BE95-000D561079B0}
__visualStudioProjectTypes.Add("603C0E0B-DB56-11DC-BE95-000D561079B0", VisualStudioProjectTypeEnum.Website_MVC);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Website_MVC, "603C0E0B-DB56-11DC-BE95-000D561079B0");
__visualStudioProjectTypeSupported.Add("603C0E0B-DB56-11DC-BE95-000D561079B0", true);
//Model View Controller (MVC) {F85E285D-A4E0-4152-9332-AB1D724D3325}
__visualStudioProjectTypes.Add("F85E285D-A4E0-4152-9332-AB1D724D3325", VisualStudioProjectTypeEnum.Model_View_Controller_MVC);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Model_View_Controller_MVC, "F85E285D-A4E0-4152-9332-AB1D724D3325");
__visualStudioProjectTypeSupported.Add("F85E285D-A4E0-4152-9332-AB1D724D3325", true);
//Model View Controller (MVC) {E53F8FEA-EAE0-44A6-8774-FFD645390401}
__visualStudioProjectTypes.Add("E53F8FEA-EAE0-44A6-8774-FFD645390401", VisualStudioProjectTypeEnum.Model_View_Controller_MVC3);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Model_View_Controller_MVC3, "E53F8FEA-EAE0-44A6-8774-FFD645390401");
__visualStudioProjectTypeSupported.Add("E53F8FEA-EAE0-44A6-8774-FFD645390401", true);
//Model View Controller (MVC) {E3E379DF-F4C6-4180-9B81-6769533ABE47}
__visualStudioProjectTypes.Add("E3E379DF-F4C6-4180-9B81-6769533ABE47", VisualStudioProjectTypeEnum.Model_View_Controller_MVC4);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Model_View_Controller_MVC4, "E3E379DF-F4C6-4180-9B81-6769533ABE47");
__visualStudioProjectTypeSupported.Add("E3E379DF-F4C6-4180-9B81-6769533ABE47", true);
//Windows Azure Project {CC5FD16D-436D-48AD-A40C-5A424C6E3E79}
__visualStudioProjectTypes.Add("CC5FD16D-436D-48AD-A40C-5A424C6E3E79", VisualStudioProjectTypeEnum.WindowsAzure_CloudService);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.WindowsAzure_CloudService, "CC5FD16D-436D-48AD-A40C-5A424C6E3E79");
__visualStudioProjectTypeSupported.Add("CC5FD16D-436D-48AD-A40C-5A424C6E3E79", true);
//Silverlight Project {A1591282-1198-4647-A2B1-27E5FF5F6F3B}
__visualStudioProjectTypes.Add("A1591282-1198-4647-A2B1-27E5FF5F6F3B", VisualStudioProjectTypeEnum.Silverlight);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.Silverlight, "A1591282-1198-4647-A2B1-27E5FF5F6F3B");
__visualStudioProjectTypeSupported.Add("A1591282-1198-4647-A2B1-27E5FF5F6F3B", true);
//Portable Class Library {786C8304-07A1-408B-BD7F-6EE04809D6DB}
__visualStudioProjectTypes.Add("786C830F-07A1-408B-BD7F-6EE04809D6DB", VisualStudioProjectTypeEnum.PortableClassLibrary);
__visualStudioProjectTypeGuids.Add(VisualStudioProjectTypeEnum.PortableClassLibrary, "786C830F-07A1-408B-BD7F-6EE04809D6DB");
__visualStudioProjectTypeSupported.Add("786C830F-07A1-408B-BD7F-6EE04809D6DB", true);
}
/// <summary>
/// Gets the VisualStudioProjectTypeEnum of the given GUID (Global Unique Identifier)
/// </summary>
/// <param name="guid">VisualStudio Project Type GUID</param>
/// <returns>VisualStudioProjectTypeEnum equivalent of the GUID</returns>
public static VisualStudioProjectTypeEnum GetVisualStudioProjectType(string guid)
{
string strGuid = guid.Replace("{", "");
strGuid = strGuid.Replace("}", "");
VisualStudioProjectTypeEnum projectType = 0;
foreach (string guidItem in strGuid.Split(';'))
{
string upperGuid = guidItem.ToUpper();
if (!__visualStudioProjectTypes.ContainsKey(upperGuid))
{
throw new NotSupportedException("Unknown project type GUID: " + guidItem);
}
projectType |= __visualStudioProjectTypes[upperGuid];
if (!__visualStudioProjectTypeSupported[upperGuid])
{
throw new NotSupportedException("NPanday does not support projects with type GUID: " + guidItem);
}
}
return projectType;
}
public static string GetVisualStudioProjectTypeGuid(VisualStudioProjectTypeEnum visualStudioProjectTypeEnum)
{
List<string> list = new List<string>();
foreach (VisualStudioProjectTypeEnum value in Enum.GetValues(typeof(VisualStudioProjectTypeEnum)))
{
if ((visualStudioProjectTypeEnum & value) == value)
{
list.Add("{" + __visualStudioProjectTypeGuids[value] + "}");
}
}
return string.Join(";", list.ToArray());
}
}
}