【问题标题】:T4, how to use EnvDTE get static classT4、如何使用EnvDTE获取静态类
【发布时间】:2016-06-07 04:23:27
【问题描述】:

如何使用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 代码;

可以输出类名,

但无法判断类是否为静态。

我想输出静态类名。

【问题讨论】:

    标签: t4 envdte


    【解决方案1】:

    添加引用:

    <#@ assembly name="EnvDTE80" #>
    <#@ import namespace="EnvDTE80" #>
    

    使用CodeClass2 接口,具有IsShared 属性

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-05
      • 1970-01-01
      • 2012-09-08
      • 1970-01-01
      • 2012-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多