Created
May 1, 2013 15:05
-
-
Save cairey/5495818 to your computer and use it in GitHub Desktop.
Inspect the Visual Studio solution and project settings using T4 template code gen.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<#@ template language="C#" debug="true" hostSpecific="true" #> | |
<#@ output extension=".cs" #> | |
<#@ Assembly Name="System.Core.dll" #> | |
<#@ assembly name="EnvDTE" #> | |
<#@ Assembly Name="System.Windows.Forms.dll" #> | |
<#@ Assembly name="System.Configuration"#> | |
<#@ import namespace="System" #> | |
<#@ import namespace="System.IO" #> | |
<#@ import namespace="System.Diagnostics" #> | |
<#@ import namespace="System.Linq" #> | |
<#@ import namespace="System.Collections" #> | |
<#@import namespace="System.Collections.Specialized"#> | |
<#@ import namespace="System.Collections.Generic" #> | |
<#@ import namespace="System.Configuration" #> | |
using System; | |
using System.Configuration; | |
public class VSSolution | |
{ | |
public static string Path | |
{ | |
get | |
{ | |
return @"<#=GetSolutionPath() #>"; | |
} | |
} | |
} | |
<#+ | |
public EnvDTE.Project GetCurrentProject() { | |
IServiceProvider _ServiceProvider = (IServiceProvider)Host; | |
if (_ServiceProvider == null) | |
throw new Exception("Host property returned unexpected value (null)"); | |
EnvDTE.DTE dte = (EnvDTE.DTE)_ServiceProvider.GetService(typeof(EnvDTE.DTE)); | |
if (dte == null) | |
throw new Exception("Unable to retrieve EnvDTE.DTE"); | |
Array activeSolutionProjects = (Array)dte.ActiveSolutionProjects; | |
if (activeSolutionProjects == null) | |
throw new Exception("DTE.ActiveSolutionProjects returned null"); | |
EnvDTE.Project dteProject = (EnvDTE.Project)activeSolutionProjects.GetValue(0); | |
if (dteProject == null) | |
throw new Exception("DTE.ActiveSolutionProjects[0] returned null"); | |
return dteProject; | |
} | |
private string GetProjectPath() | |
{ | |
EnvDTE.Project project = GetCurrentProject(); | |
System.IO.FileInfo info = new System.IO.FileInfo(project.FullName); | |
return info.Directory.FullName; | |
} | |
private string GetSolutionPath() | |
{ | |
EnvDTE.Project project = GetCurrentProject(); | |
System.IO.FileInfo info = new System.IO.FileInfo(project.FullName); | |
return System.IO.Directory.GetParent(info.Directory.FullName).FullName; | |
} | |
private string GetConfigPath() | |
{ | |
EnvDTE.Project project = GetCurrentProject(); | |
foreach (EnvDTE.ProjectItem item in project.ProjectItems) | |
{ | |
// if it is the app.config file, then open it up | |
if (item.Name.Equals("App.config",StringComparison.InvariantCultureIgnoreCase) || item.Name.Equals("Web.config",StringComparison.InvariantCultureIgnoreCase)) | |
return GetProjectPath() + "\\" + item.Name; | |
} | |
return String.Empty; | |
} | |
public string GetDataDirectory(){ | |
EnvDTE.Project project=GetCurrentProject(); | |
return System.IO.Path.GetDirectoryName(project.FileName)+"\\App_Data\\"; | |
} | |
#> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment