语言中立的自定义工具

发布于 2024-08-14 08:19:58 字数 995 浏览 5 评论 0原文

我正在开发一个 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 来代替演示的 CSharpGeneratorsGuidCSharpProjectGuid 以便让我的工具在任何类型的项目中使用? (如 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

与之呼应 2024-08-21 08:19:58

我一直在寻找,但没有找到答案,而且我真的开始相信没有答案。证明我错了(是的,请证明我错了),我会将您的答案标记为已接受的答案。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文