用于在构建期间将C枚举和常量脚本编写到c#的工具

本文关键字:脚本 工具 常量 构建 枚举 用于 | 更新日期: 2023-09-27 17:54:46

我有一个自动生成的.c文件,其中包含const和enum,我需要从。net访问。我想运行一个预构建脚本,将。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自带的工具

用于在构建期间将C枚举和常量脚本编写到c#的工具

您可以尝试从T4文本模板生成代码文件。它很好地集成到Visual Studio中,一旦你掌握了它的窍门,它就是一个相当容易使用且功能强大的文本模板引擎。当然,你需要定义两个单独的模板(一个用于c#,一个用于C)。

[EDIT]:看来我没有读到整个问题。OP的问题是从C转换到c#。我仍然坚持在这种情况下使用T4的建议,但是为了阅读C源代码,您需要编写一些自定义解析代码。考虑到它只涉及枚举类型定义,解析代码应该相当简单。另一方面,如果C定义已经从某些外部定义(如某处的xml文件)生成,那么您可以将其视为数据源