ToMSBuildPlatform() public static method

public static ToMSBuildPlatform ( string platform ) : string
platform string
return string
        /// <summary>
        /// Deletes a specified platform name.
        /// </summary>
        /// <param name="platName">The platform name to delet.</param>
        /// <returns>If the method succeeds, it returns S_OK. If it fails, it returns an error code.</returns>
        public virtual int DeleteCfgsOfPlatformName(string platName)
        {
            if (!this.ProjectMgr.QueryEditProjectFile(false))
            {
                throw Marshal.GetExceptionForHR(VSConstants.OLE_E_PROMPTSAVECANCELLED);
            }

            var platform = ProjectConfig.ToMSBuildPlatform(platName);

            if (platform != null)
            {
                ProjectMgr.BuildProject.ReevaluateIfNecessary();
                var inputElements    = new List <ProjectPropertyGroupElement>(this.project.BuildProject.Xml.PropertyGroups);
                var elementsToRemove = new List <ProjectPropertyGroupElement>();

                foreach (ProjectPropertyGroupElement element in inputElements)
                {
                    var cfgNameAndPlatform = ProjectConfig.ConfigAndPlatformOfCondition(element.Condition);

                    if (ProjectConfig.EqPlatform(cfgNameAndPlatform.Item2, platform))
                    {
                        elementsToRemove.Add(element);
                        this.configurationsList.Remove(ProjectConfig.MakeConfigKey(cfgNameAndPlatform.Item1, cfgNameAndPlatform.Item2));
                    }
                }

                foreach (ProjectPropertyGroupElement element2 in elementsToRemove)
                {
                    element2.Parent.RemoveChild(element2);
                }

                NotifyOnPlatformNameDeleted(platform);
            }

            return(VSConstants.S_OK);
        }
        /// <summary>
        /// Copies an existing platform name or creates a new one.
        /// </summary>
        /// <param name="platformName">The name of the new platform.</param>
        /// <param name="clonePlatformName">The name of the platform to copy, or a null reference, indicating that AddCfgsOfPlatformName should create a new platform.</param>
        /// <returns>If the method succeeds, it returns S_OK. If it fails, it returns an error code.</returns>
        public virtual int AddCfgsOfPlatformName(string platformName, string clonePlatformName)
        {
            var msbuildPlatform = ProjectConfig.ToMSBuildPlatform(platformName);

            clonePlatformName = ProjectConfig.ToMSBuildPlatform(clonePlatformName);

            if (!this.ProjectMgr.QueryEditProjectFile(false))
            {
                throw Marshal.GetExceptionForHR(VSConstants.OLE_E_PROMPTSAVECANCELLED);                 //0x8004000c
            }
            ProjectMgr.BuildProject.ReevaluateIfNecessary();
            var propertyGroups = new List <ProjectPropertyGroupElement>(this.project.BuildProject.Xml.PropertyGroups);
            var dictionary     = new Dictionary <string, ProjectPropertyGroupElement>(StringComparer.Ordinal);

            if (clonePlatformName != null)
            {
                foreach (ProjectPropertyGroupElement propertyGroup in propertyGroups)
                {
                    if (!string.IsNullOrEmpty(propertyGroup.Condition))
                    {
                        var cfgNameAndPlatform = ProjectConfig.ConfigAndPlatformOfCondition(propertyGroup.Condition);
                        var cfgNme             = ProjectConfig.GetConfigName(cfgNameAndPlatform);
                        if (ProjectConfig.EqPlatform(cfgNameAndPlatform.Item2, clonePlatformName) && !dictionary.ContainsKey(cfgNme))
                        {
                            dictionary.Add(cfgNme, propertyGroup);
                        }
                    }
                }
            }

            string[] propertiesConditionedOn = this.GetPropertiesConditionedOn("Configuration");

            if (propertiesConditionedOn.Length == 0)
            {
                return(VSConstants.E_FAIL);
            }

            foreach (string configName in propertiesConditionedOn)
            {
                if (dictionary.Count <= 0 || dictionary.ContainsKey(configName))
                {
                    ProjectPropertyGroupElement newConfig = null;
                    if (dictionary.ContainsKey(configName))
                    {
                        newConfig = this.project.ClonePropertyGroup(dictionary[configName]);

                        foreach (ProjectPropertyElement property in newConfig.Properties)
                        {
                            if (ProjectConfig.Eq(property.Name, "PlatformTarget") || ProjectConfig.Eq(property.Name, "Platform"))
                            {
                                property.Parent.RemoveChild(property);
                            }
                        }
                    }
                    else
                    {
                        this.PopulateEmptyConfig(ref newConfig);
                        this.AddOutputPath(newConfig, configName);
                    }
                    newConfig.AddProperty("PlatformTarget", msbuildPlatform);
                    newConfig.AddProperty("Platform", msbuildPlatform);
                    newConfig.Condition = ProjectConfig.MakeMSBuildCondition(configName, msbuildPlatform);
                }
            }

            NotifyOnPlatformNameAdded(platformName);

            return(VSConstants.S_OK);
        }
        /// <summary>
        /// Copies an existing configuration name or creates a new one.
        /// </summary>
        /// <param name="name">The name of the new configuration.</param>
        /// <param name="cloneName">the name of the configuration to copy, or a null reference, indicating that AddCfgsOfCfgName should create a new configuration.</param>
        /// <param name="fPrivate">Flag indicating whether or not the new configuration is private. If fPrivate is set to true, the configuration is private. If set to false, the configuration is public. This flag can be ignored.</param>
        /// <returns>If the method succeeds, it returns S_OK. If it fails, it returns an error code. </returns>
        public virtual int AddCfgsOfCfgName(string name, string cloneName, int fPrivate)
        {
            // We need to QE/QS the project file
            if (!this.ProjectMgr.QueryEditProjectFile(false))
            {
                throw Marshal.GetExceptionForHR(VSConstants.OLE_E_PROMPTSAVECANCELLED);
            }

            ProjectMgr.BuildProject.ReevaluateIfNecessary();

            var list       = new List <ProjectPropertyGroupElement>(this.project.BuildProject.Xml.PropertyGroups);
            var dictionary = new Dictionary <string, ProjectPropertyGroupElement>(StringComparer.Ordinal);

            if (cloneName != null)
            {
                foreach (ProjectPropertyGroupElement element in list)
                {
                    if (!string.IsNullOrEmpty(element.Condition))
                    {
                        var cfgNameAndPlatform = ProjectConfig.ConfigAndPlatformOfCondition(element.Condition);
                        //ConfigCanonicalName name2 = ConfigCanonicalName.OfCondition(element.Condition);
                        var platformName = ProjectConfig.GetPlatformName(cfgNameAndPlatform);
                        if ((string.Compare(ProjectConfig.GetConfigName(cfgNameAndPlatform), cloneName, StringComparison.OrdinalIgnoreCase) == 0) && !dictionary.ContainsKey(platformName))
                        {
                            dictionary.Add(platformName, element);
                        }
                    }
                }
            }
            string[] platformsFromProject = this.GetPlatformsFromProject();
            if (platformsFromProject.Length == 0)
            {
                platformsFromProject = new [] { string.Empty }
            }
            ;

            foreach (string latform in platformsFromProject)
            {
                if (dictionary.Count <= 0 || dictionary.ContainsKey(latform))
                {
                    //ConfigCanonicalName name3 = new ConfigCanonicalName(name, latform);
                    ProjectPropertyGroupElement newConfig = null;
                    if (dictionary.ContainsKey(latform))
                    {
                        newConfig = this.project.ClonePropertyGroup(dictionary[latform]);
                        foreach (ProjectPropertyElement element3 in newConfig.Properties)
                        {
                            if (element3.Name.Equals("OutputPath", StringComparison.OrdinalIgnoreCase))
                            {
                                element3.Parent.RemoveChild(element3);
                            }
                        }
                    }
                    else
                    {
                        var msbuildPlatform = ProjectConfig.ToMSBuildPlatform(latform);
                        this.PopulateEmptyConfig(ref newConfig);
                        if (!string.IsNullOrEmpty(msbuildPlatform))
                        {
                            newConfig.AddProperty("PlatformTarget", msbuildPlatform);
                        }
                    }

                    this.AddOutputPath(newConfig, name);
                    newConfig.Condition = ProjectConfig.MakeMSBuildCondition(name, latform);
                }
            }

            NotifyOnCfgNameAdded(name);
            return(VSConstants.S_OK);
        }