我正在开发一个 DSL 工具,对于这个工具,有一个自定义代码生成工具可以创建输出文件。目前,该工具使用 DslPackage 上的 RegistrationAttribute 使用 C# 注册,代码如下:
class FileGenerationRegistrationAttribute : RegistrationAttribute
{
private const string CSharpGeneratorsGuid = "{fae04ec1-301f-11d3-bf4b-00c04f79efbc}";
private const string CSharpProjectGuid = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}";
public override void Register( RegistrationAttribute.RegistrationContext context )
{
// register custom generator
key = context.CreateKey( @"Generators\ " + CSharpGeneratorsGuid );
...
key.Close();
// register editor notification
key = context.CreateKey( @"Projects\ " + CSharpProjectGuid + @"\FileExtensions" );
...
key.Close();
}
}
这可行,但问题是,该工具生成的代码将是语言中立的(通过使用 CodeDOM)。它不要求项目是 C# 类型。所以我的问题是:我可以使用哪些 GUID 而不是演示的CSharpGeneratorsGuid
,CSharpProjectGuid
以便让我的工具用于任何类型的项目?(如 VB、F#、IronPython 等)