/// <summary> /// Retrives the configuration and the platform using the IVsSolutionBuildManager2 interface. /// </summary> /// <param name="serviceProvider">A service provider.</param> /// <param name="hierarchy">The hierarchy whose configuration is requested. This method calls into /// native code and may be called on a background thread, so make sure the IVsHierarchy passed is /// safe to use for that sort of interop.</param> /// <param name="configuration">The name of the active configuration.</param> /// <param name="platform">The name of the platform.</param> /// <returns>true if successfull.</returns> /// <summary> /// Retrives the configuration and the platform using the IVsSolutionBuildManager2 interface. /// </summary> /// <param name="serviceProvider">A service provider.</param> /// <param name="hierarchy">The hierrachy whose configuration is requested.</param> /// <param name="configuration">The name of the active configuration.</param> /// <param name="platform">The name of the platform.</param> /// <returns>true if successfull.</returns> internal static bool TryGetActiveConfigurationAndPlatform(System.IServiceProvider serviceProvider, IVsHierarchy hierarchy, out ConfigCanonicalName configCanonicalName) { if (serviceProvider == null) { throw new ArgumentNullException("serviceProvider"); } if (hierarchy == null) { throw new ArgumentNullException("hierarchy"); } IVsSolutionBuildManager2 solutionBuildManager = serviceProvider.GetService(typeof(SVsSolutionBuildManager)) as IVsSolutionBuildManager2; if (solutionBuildManager == null) { configCanonicalName = new ConfigCanonicalName(); return(false); } IVsProjectCfg[] activeConfigs = new IVsProjectCfg[1]; ErrorHandler.ThrowOnFailure(solutionBuildManager.FindActiveProjectCfg(IntPtr.Zero, IntPtr.Zero, hierarchy, activeConfigs)); IVsProjectCfg activeCfg = activeConfigs[0]; // Can it be that the activeCfg is null? System.Diagnostics.Debug.Assert(activeCfg != null, "Cannot find the active configuration"); string canonicalName; ErrorHandler.ThrowOnFailure(activeCfg.get_CanonicalName(out canonicalName)); configCanonicalName = new ConfigCanonicalName(canonicalName); return(true); }