如何使用EnvDTE获取静态类
<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="EnvDTE" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="EnvDTE" #>
<#@ output extension=".txt" #>
<#
IServiceProvider hostServiceProvider = Host as IServiceProvider;
EnvDTE.DTE dte = hostServiceProvider.GetService(typeof(EnvDTE.DTE)) as EnvDTE.DTE;
EnvDTE.ProjectItem containingProjectItem = dte.Solution.FindProjectItem(Host.TemplateFile);
Project project = containingProjectItem.ContainingProject;
var codes= project.CodeModel.CodeElements;
foreach (CodeElement code in codes) {
if (code.Name=="MS") continue;
if (code.Name=="System") continue;
if (code.Name=="Microsoft") continue;
if (code.Name.StartsWith("EnvDTE")) continue;
try
{
foreach (CodeElement item in ((CodeNamespace)code).Members) {
if (item.Kind== vsCMElement.vsCMElementClass) {
CodeClass cc = (CodeClass)item;
#>
<#=cc.Name #>
<#
}
}
} catch {}
} #>这是T4代码;
它可以输出类名,
但是它不能确定类是否是静态的。
我想输出静态类名。
发布于 2016-06-07 13:27:24
添加引用:
<#@ assembly name="EnvDTE80" #>
<#@ import namespace="EnvDTE80" #>使用具有IsShared属性的CodeClass2接口
https://stackoverflow.com/questions/37670450
复制相似问题