2017-11-29 19 views
0

私ははT4テンプレート内の64ビットのDLLを参照

<#@ assembly name="path\to\64bit.dll" #> 

のようにT4テンプレートに64ビットのDLLを参照しTextTransform.exeでそれを実行した場合、それは言って、例外を与える

There was a problem loading the assembly 'path\to\64bit.dll' The following Exception was thrown: 
System.BadImageFormatException: Could not load file or assembly 'file:///path\to64bit.dll' or one of its dependencies. An attempt was made to load a program with an incorrect format. 

TextTransform.exeの64ビットバージョンがありますか、またはこの方法を使用する別の方法がありますか?

答えて

0

TextTemplatingFileGeneratorツールが32ビットプロセスで実行されているようで、64ビットアセンブリをT4テンプレートにインポートすることは不可能です。

私はMicrosoft.VisualStudio.TextTemplatingアセンブリにTextTemplatingクラスから継承するカスタムテンプレートクラスを記述するために2つの選択肢

  1. を見つけました。複雑なコードによるテキスト生成が存在する場合、これは理解しやすく扱いやすいので、ttファイルを使うよりも良い方法だと思います。ここにその例があります。 (また、64ビット)本体に64ビットアセンブリ

    namespace SixtyFourBitClassLibrary 
    { 
        public class Class1 
        { 
         public string SampleString = "Sample"; 
        } 
    } 
    




2.

namespace ExecuteSixtyFourBitAssemblyInTT 
    { 
     class Program 
     { 
      static void Main(string[] args) 
      { 
       SampleTemplate st = new SampleTemplate(); 
       var s = st.TransformText(); 

       Console.WriteLine(s); 
      }  
     } 

     class SampleTemplate : TextTransformation 
     { 
      public override string TransformText() 
      { 
       Class1 cls = new Class1(); 

       return string.Format("{0} OK",cls.SampleString); 
      } 
     } 
    } 
は、カスタムテキストテンプレートホストを作成します。これは Walkthrough: Creating a Custom Text Template Hostです。このメソッドでは、既存のttファイルを使用できます。私はここでコードを共有しませんが、動作していることを確認しました。

どちらのソリューションも、世代を開始するには別の方法(多分拡張子)が必要です。


関連する問題