Microsoft.VisualStudio.Project.ProjectConfig.ProjectConfig C# (CSharp) Method

ProjectConfig() public method

public ProjectConfig ( ProjectNode project, string canonicalName ) : System
project ProjectNode
canonicalName string
return System
        public ProjectConfig(ProjectNode project, string canonicalName)
        {
            this.project = project;
            string configName;
            string platformName;
            TrySplitConfigurationCanonicalName(canonicalName, out configName, out platformName);

            ConfigurationName = configName;
            PlatformName = platformName;

            // Because the project can be aggregated by a flavor, we need to make sure
            // we get the outer most implementation of that interface (hence: project --> IUnknown --> Interface)
            IntPtr projectUnknown = Marshal.GetIUnknownForObject(this.ProjectMgr);
            try
            {
                IVsProjectFlavorCfgProvider flavorCfgProvider = (IVsProjectFlavorCfgProvider)Marshal.GetTypedObjectForIUnknown(projectUnknown, typeof(IVsProjectFlavorCfgProvider));
                ErrorHandler.ThrowOnFailure(flavorCfgProvider.CreateProjectFlavorCfg(this, out flavoredCfg));
                if (flavoredCfg == null)
                    throw new COMException();
            }
            finally
            {
                if (projectUnknown != IntPtr.Zero)
                    Marshal.Release(projectUnknown);
            }
            // if the flavored object support XML fragment, initialize it
            IPersistXMLFragment persistXML = flavoredCfg as IPersistXMLFragment;
            if (null != persistXML)
            {
                this.project.LoadXmlFragment(persistXML, ConfigKey);
            }
        }