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. このアセンブリの型にアクセスするには、そのうちの 1 つを選択して、そこからアセンブリを取得します。

    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 に答える