首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >T4,如何使用EnvDTE获取静态类

T4,如何使用EnvDTE获取静态类
EN

Stack Overflow用户
提问于 2016-06-07 12:23:27
回答 1查看 576关注 0票数 1

如何使用EnvDTE获取静态类

代码语言:javascript
复制
<#@ 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代码;

它可以输出类名,

但是它不能确定类是否是静态的。

我想输出静态类名。

EN

回答 1

Stack Overflow用户

发布于 2016-06-07 13:27:24

添加引用:

代码语言:javascript
复制
<#@ assembly name="EnvDTE80" #>
<#@ import namespace="EnvDTE80" #>

使用具有IsShared属性的CodeClass2接口

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37670450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档