Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(583)

Unified Diff: visual_studio/NativeClientVSAddIn/NativeClientVSAddIn/Utility.cs

Issue 10830151: VS Add-in more properties and improvements (Closed) Base URL: https://nativeclient-sdk.googlecode.com/svn/trunk/src
Patch Set: Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: visual_studio/NativeClientVSAddIn/NativeClientVSAddIn/Utility.cs
diff --git a/visual_studio/NativeClientVSAddIn/NativeClientVSAddIn/Utility.cs b/visual_studio/NativeClientVSAddIn/NativeClientVSAddIn/Utility.cs
index 2b2580538c44dc5431f147734036c339ff6eeb65..8dcdb02a67074f37c3b15ef69018943edb5e58d3 100644
--- a/visual_studio/NativeClientVSAddIn/NativeClientVSAddIn/Utility.cs
+++ b/visual_studio/NativeClientVSAddIn/NativeClientVSAddIn/Utility.cs
@@ -8,6 +8,7 @@ namespace NativeClientVSAddIn
using System.Collections.Generic;
using EnvDTE;
+ using EnvDTE80;
using Microsoft.VisualStudio.VCProjectEngine;
/// <summary>
@@ -22,8 +23,16 @@ namespace NativeClientVSAddIn
/// <returns>True if project is a Visual C/C++ project.</returns>
public static bool IsVisualCProject(Project proj)
{
- string projectType = proj.Properties.Item("Kind").Value as string;
- return projectType == "VCProject";
+ foreach (Property prop in proj.Properties)
+ {
+ if (prop.Name == "Kind")
+ {
+ string projectType = prop.Value as string;
+ return projectType == "VCProject";
+ }
+ }
+
+ return false;
}
/// <summary>
@@ -56,6 +65,36 @@ namespace NativeClientVSAddIn
}
/// <summary>
+ /// Returns all VCConfigurations from the open solution that have the specified platform name.
+ /// Note only VC++ projects are checked.
+ /// </summary>
+ /// <param name="dte">Visual studio main interface.</param>
+ /// <param name="platformName">Name of the platform to get.</param>
+ /// <returns>List of all matching VCConfigurations.</returns>
+ public static List<VCConfiguration> GetPlatformVCConfigurations(DTE2 dte, string platformName)
+ {
+ var platformConfigs = new List<VCConfiguration>();
+ foreach (Project proj in dte.Solution.Projects)
+ {
+ if (Utility.IsVisualCProject(proj))
+ {
+ VCProject vcproj = (VCProject)proj.Object;
+ IVCCollection configs = vcproj.Configurations;
+
+ foreach (VCConfiguration config in configs)
+ {
+ if (platformName.Equals(config.Platform.Name))
+ {
+ platformConfigs.Add(config);
+ }
+ }
+ }
+ }
+
+ return platformConfigs;
+ }
+
+ /// <summary>
/// Extends the string class to allow checking if a string contains another string
/// allowing a comparison type (such as case-insensitivity).
/// </summary>
@@ -89,6 +128,31 @@ namespace NativeClientVSAddIn
}
/// <summary>
+ /// Helper function to properly dispose of a process object and ensure it is dead. The given
+ /// reference is set to null afterwards.
+ /// </summary>
+ /// <param name="process">Process to kill. Reference is set to null afterwards.</param>
+ public static void EnsureProcessKill(ref System.Diagnostics.Process process)
+ {
+ if (process == null)
+ {
+ return;
+ }
+
+ try
+ {
+ process.Kill();
+ }
+ catch (System.InvalidOperationException)
+ {
+ // This happens if the process has already exited.
+ }
+
+ process.Dispose();
+ process = null;
+ }
+
+ /// <summary>
/// Helper function for IsDescendantOfProcessHelper().
/// This function prevents an edge case where a process has a parent process ID
/// that refers to a descendant of itself. This can occur when the parent of a process

Powered by Google App Engine
This is Rietveld 408576698