语言中立的自定义工具
我正在开发一个 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 等)
I'm working on a DSL tool, and for this tool, there exists a custom code generation tool that creates output files. Currently, this tool is registered with C# using a RegistrationAttribute on the DslPackage with the following code:
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();
}
}
This works, but the thing is, the code generated by the tool is going to be language neutral (through the use of CodeDOM). It doesn't require the project to be of the type C#. So my question is this: What GUIDs can I use instead of the demonstrated CSharpGeneratorsGuid
and CSharpProjectGuid
in order to let my tool be used in any kind of project? (Like VB, F#, IronPython, et. al.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我一直在寻找,但没有找到答案,而且我真的开始相信没有答案。证明我错了(是的,请证明我错了),我会将您的答案标记为已接受的答案。
I've searched and searched, but I've found no answer, and I'm truly starting to believe there is none. Prove me wrong (yes, please prove me wrong) and I'll mark your answer as the accepted answer.