2

.Netからアクセスする必要のあるconstとenumを含む自動生成された.cファイルがあります。.cファイル(C構文)を.csファイル(C#構文)に変換するビルド前のスクリプトを実行したいと思います。ファイルは非常に単純なので、この問題から抜け出すためのスクリプトを作成できるはずです。

これが.cファイルのセクションです

#define Bitfile "Test.bit"

static const char* const BitfileSignature = "A6A316954DA417A2F886F3B0035019B1";

typedef enum
{
   ControlBool_TestBool_Address = 0x815E,
   ControlBool_IrqHandshakeWriteToDma_Address = 0x8112,
   ControlBool_WriteToDma_Address = 0x810E,
   ControlBool_stop_Address = 0x813A,
} ControlBool;

そして、それをこのようなものに変換したいと思います

public static class MyConstants
{
    public static string Bitfile = "Test.bit";
    public static string BitfileSignature = "A6A316954DA417A2F886F3B0035019B1";
}

public enum MyEnum
{
    ControlBool_TestBool_Address = 0x815E,
    ControlBool_IrqHandshakeWriteToDma_Address = 0x8112,
    ControlBool_WriteToDma_Address = 0x810E,
    ControlBool_stop_Address = 0x813A,
}

この変換に使用できる優れたツールを知っている人はいますか?できればVS2010に付属するツール。

4

1 に答える 1

1

T4テキストテンプレートを試して、からコードファイルを生成できます。Visual Studioにうまく統合されており、一度コツをつかめば、かなり使いやすく、強力なテキストテンプレートエンジンになります。もちろん、2つの別々のテンプレート(1つはC#用、もう1つはC用)を定義する必要があります。

[編集]:質問全体を読んでいないようです。OPの問題は、CからC#への変換です。この場合はT4を使用するという私のアドバイスを今でも支持していますが、Cソースを読み取るには、カスタムの解析コードを作成する必要があります。列挙型の定義のみが含まれることを考えると、解析コードはかなり簡単なはずです。一方、C defがすでに何らかの外部定義(どこかのxmlファイルなど)から生成されている場合は、それをデータソースとして扱うことができます。

于 2013-01-21T14:38:22.583 に答える