VB.NET 中存在的 C# 中的 Winforms "application framework" 在哪里?

Where is the Winforms "application framework" in C# that exists in VB.NET?

我过去开发了 VB.NET Winforms 项目,这些项目使用 "Windows Application Framework" 设置,可以在项目属性的 "Application" 选项卡上找到:

其中一个特别有用的功能是只需单击一个复选框即可创建单实例应用程序。这很好用。这是 Winforms 项目的 C# 项目属性:

"Application" 选项卡和其他地方都没有关于应用程序框架的内容。我找到的所有关于 "single instance" 应用程序的参考资料都谈到了使用带有互斥锁的自定义解决方案。我找不到有关为什么在 C# 项目中没有等效应用程序框架的任何信息。任何人都可以阐明这一点吗?

这些属性仅在 VB.Net 项目类型中可用。如果你想在 C# 项目中使用这些 VB.Net 属性,那么你需要添加对 Microsoft.VisualBasic 程序集的引用并创建你的自定义应用程序 class 继承自 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase 以访问受保护的成员出现在项目属性和 运行 您的 windows 表单应用程序中,通过您的自定义应用程序 class 而不是 C# 应用程序 class 方法。

static class Program
{
    [STAThread]
    static void Main(string[] args)
    {
        var app = new MyApp(new Form1());
        app.Run(args);
    }
}

internal class MyApp : Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase
{
    public MyApp(Form mainForm)
    {
        this.EnableVisualStyles = true;
        this.SaveMySettingsOnExit = true;
        this.IsSingleInstance = true;
        this.MainForm = mainForm;
    }
}

Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase 为 winform 应用程序提供预定义的功能,这些功能只能通过 VB.Net 获得。 Microsoft.VisualBasic 程序集中有许多预定义的 class 库在 C# 中不可用。