18

我想获得特定程序集中的所有课程这是我的代码

 var assembly=Assembly.GetExecutingAssembly();

 var assemblies = assembly.GetTypes().Where(t => String.Equals(t.Namespace, "RepoLib.Rts.Web.Plugins.Profiler.Models", StringComparison.Ordinal)).ToArray();

当 c# 代码一切正常时,我得到了我的程序集,但是当写入t4文件时,我没有任何错误,但我的程序集计数是。

4

1 回答 1

36

在 T4 模板中,执行的程序集不是您的,而是来自 T4 引擎的程序集。

要从您的程序集中访问类型,您必须执行以下步骤:

  1. 将对您的程序集的引用添加到模板中。把它放在它的顶部:

    <#@ assembly name="$(SolutionDir)<Project>\bin\Debug\<Project>.dll" #>
    
  2. 导入程序集的命名空间。把它放在上一行下面的某个地方:

    <#@ import namespace="<Project>.<Namespace>" #>
    
  3. 要访问此程序集中的类型,请选择其中一个并从中获取程序集:

    var assembly = typeof(<Type in assembly>).Assembly;
    var types = assembly.GetTypes()
                        .Where(t => String.Equals(
                            t.Namespace,
                            "RepoLib.Rts.Web.Plugins.Profiler.Models",
                            StringComparison.Ordinal))
                        .ToArray();
    
于 2013-02-16T11:53:07.647 回答