Considero utilizar un archivo .tt para procesar el .h y convertirlo en un archivo .cs. Es muy fácil y los archivos fuente serán parte de su solución C# (lo que significa que se actualizarán cuando el archivo .h cambie), se puede hacer clic para abrir en el editor, etc.
Si solo tiene tiene 1 #define puede ser un poco exagerado, pero si tiene un archivo lleno de ellos (por ejemplo, un archivo mfc resource.h quizás), entonces esta solución se convierte en una gran victoria.
por ejemplo: cree un archivo, DefineConverter.tt y agréguelo a su proyecto, cambie la línea marcada para hacer referencia a su archivo .h, y obtendrá una nueva clase en su proyecto llena de entradas estáticas const. (tenga en cuenta que el archivo de entrada es relativo a su archivo de proyecto, establezca hostspecific = false si desea rutas absolutas).
<#@ template language="C#v3.5" hostspecific="True" debug="True" #>
<#@ output extension="cs" #>
<#@ assembly name="System.Core.dll" #>
<#@ import namespace="System" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.IO" #>
<#
string input_file = this.Host.ResolvePath("resource.h"); <---- change this
StreamReader defines = new StreamReader(input_file);
#>
//------------------------------------------------------------------------------
// This code was generated by template for T4
// Generated at <#=DateTime.Now#>
//------------------------------------------------------------------------------
namespace Constants
{
public class <#=System.IO.Path.GetFileNameWithoutExtension(input_file)#>
{
<#
// constants definitions
while (defines.Peek() >= 0)
{
string def = defines.ReadLine();
string[] parts;
if (def.Length > 3 && def.StartsWith("#define"))
{
parts = def.Split(null as char[], StringSplitOptions.RemoveEmptyEntries);
try {
Int32 numval = Convert.ToInt32(parts[2]);
#>
public static const int <#=parts[1]#> = <#=parts[2]#>;
<#
}
catch (FormatException e) {
#>
public static const string <#=parts[1]#> = "<#=parts[2]#>";
<#
}
}
} #>
}
}
Esto sólo parece la respuesta más obvia y directa a mí. –