public ProjectConfig(ProjectNode project, string configuration)
{
ProjectMgr = project;
ConfigName = configuration;
// 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)
var projectUnknown = Marshal.GetIUnknownForObject(ProjectMgr);
try
{
var 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
var persistXML = flavoredCfg as IPersistXMLFragment;
if (null != persistXML)
{
ProjectMgr.LoadXmlFragment(persistXML, DisplayName);
}
}