【问题标题】:Very strange error trying to translate C# code into a VB.NET WPF application尝试将 C# 代码转换为 VB.NET WPF 应用程序时出现非常奇怪的错误
【发布时间】:2014-11-08 17:20:12
【问题描述】:

这是原始的 Nevron 示例代码:

static class Program
{
    [STAThread]
    static void Main()
    {
        App app = new App();
        NModule[] modules = new NModule[] { 
              // TODO: Create modules here
        };
        NNOVApplicationInstaller.Install(modules);
        app.Run(new MainWindow());
    }
}

这是我的粗略估计:

Public NotInheritable Class Program

Private Sub New()
End Sub

<STAThread> _
Shared Sub Main()

    Dim app As Application = New Application()
    Dim modules As NModule() = New NModule() {}
    NNOVApplicationInstaller.Install(modules)
    app.Run(New MainWindow)

End Sub

结束类

然而,当我尝试编译时,我得到了这个令人头晕目眩的错误:

'Sub Main' is declared more than once in 'DataMonitor.Visuals': DataMonitor.Visuals.Program.Main(), DataMonitor.Visuals.Application.Main()  DataMonitor.Visuals

然而整个项目的其他任何地方都没有Main,只有我的班级。

【问题讨论】:

  • 我不确定,但我认为它的 Sub New() 相当于 vb 中的 Sub Main() ......即它是在使用类时运行的子......毫无疑问,有人会更技术地解释它。尝试删除 Sub New()...
  • 不。还是一样。 Sub New 只是阻止实例化。

标签: wpf vb.net nevron


【解决方案1】:

默认情况下,为 VB.NET 项目启用应用程序框架。这会在您无法访问的代码中为您创建 Main 方法。如果您想编写自己的Main 方法,则必须在项目属性中禁用应用程序框架。

请注意,启用应用程序框架后,您应该处理应用程序的Startup 事件,您也可以从项目属性中访问该事件。该事件是从自动生成的 Main 方法引发的。

【讨论】:

  • 太好了,谢谢。不知道为什么他们不能只拥有不同的语言文件而所有其他该死的东西都一样。
  • VB的重点是让初学者更容易。应用程序框架等功能是其中的一部分。
  • 天啊,@jmcilhinney,你本可以愚弄我的。我曾经是 VB6 专家,我的第一份工作。现在这很容易。现在没有什么比 C# 更能从我的手指中流淌出来了。
  • 一个要点:“应用程序框架已启用”...“创建 Main 方法”。禁用此功能会通过修改 .vbproj 文件从构建中删除 Application.xaml,因此 msbuild 不会生成 Application.g.vb 文件,该文件将包含 Sub Main (和一个 Application.InitializeComponent 实例方法,它设置了这些东西您在 Application.xaml 中指定)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-28
  • 1970-01-01
  • 2014-01-26
  • 2021-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多