VB.Net中的主要功能在哪里

时间:2011-08-31 14:55:43

标签: c# .net vb.net

我接管了VB.Net WinForms应用程序的支持。我实际上是一名c#开发人员,更熟悉c#项目中visual studio项目的设置。现在我试图确定我的应用程序崩溃在特定的XP安装上的原因,并且我在这里阅读了建议

http://social.msdn.microsoft.com/forums/en-US/winformssetup/thread/53c2de93-ab33-41d0-b5dd-7ca5fbfa5c24/

在main函数中添加try catch块。这是在第5个帖子的底部建议的。 (我将在下面引用它)但是,如果我查看VB.Net visual studio项目,我找不到Main()过程。我找到的是一个名为“我的项目”的灰色文件夹,里面有一个“Application.myapp”文件。此文件具有关联的设计器文件,但如果单击它,我会看到以下xml:

<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <MySubMain>true</MySubMain>
  <MainForm>MDIMain</MainForm>
  <SingleInstance>false</SingleInstance>
  <ShutdownMode>0</ShutdownMode>
  <EnableVisualStyles>true</EnableVisualStyles>
  <AuthenticationMode>0</AuthenticationMode>
  <SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

所以任何人都可以告诉我这个VB.Net项目的实际主程序调用的位置,以便我可以尝试捕获正在发生的异常。如果,正如我怀疑的那样,我的VB.Net项目中实际上没有主程序,有人可以告诉我如何在我的项目中执行以下操作:

[STAThread]
static void Main()
{
    try
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
    catch (System.IO.FileNotFoundException ex)
    {
        MessageBox.Show(ex.Message + "    \n\n\n" + ex.StackTrace);
    }
}

5 个答案:

答案 0 :(得分:7)

VB有一个名为“Application Framework”的特殊模式(可以在主选项下找到)。

如果启用此模式,编译器会自动生成Main方法并在其周围出现一些问题。您可以禁用此选项;但是,这可能会导致项目出现问题,因为项目实际上可能会使用应用程序框架功能。

或者,您可以使用相同的应用程序框架为未捕获的异常(UnhandledExceptions)注册事件处理程序。

答案 1 :(得分:3)

更多VB方法是打开Application属性并单击ViewApplicationEvents按钮。这将打开Application.xaml.vb文件,您可以在其中为应用程序添加自定义事件处理程序。从左侧下拉列表中选择应用程序事件,您可以轻松访问一系列事件,包括DispatcherUnhandledException,Activated,Navigating,Startup,Exit等。您还可以通过从左侧下拉列表中选择Applciation并选择此方法来添加Main方法从右下方开始。

对于WindowsForms应用程序,该过程类似。但是,当您选择Applciation Events按钮时,显示的文件是ApplicationEvents.vb文件。在此处,要添加全局错误处理程序,请选择左下拉列表并选择MyApplication Events。然后在右侧下拉列表中添加UnhandledException处理程序。您也可以在此处创建Main方法。

答案 2 :(得分:1)

答案 3 :(得分:1)

今天我来到这个页面寻找答案,我在这里和代码项目中找到了一些好的。

当我满意自己,我知道该怎么做时,我手边还有一个简化的方法,使项目属性几乎不受影响。 (您必须关闭Application Framework,否则VB运行时将不会运行您的主例程!)简而言之,如果您在类模块中定义了Main例程来定义您的启动窗体,Visual Basic运行时引擎将找到并执行它。

如上所述,您的例程必须定义为共享。您可以在How to Run a Particular Form in VB.NET

查看我的示例以及其他一些注释

<强>买者

禁用“应用程序框架”时,将丢失“单实例”复选框。我刚刚完成了对引用示例的更新,以包含我开发和测试的代码以强制执行单个实例。

答案 4 :(得分:0)

您可以在任何地方创建该方法,只要它Shared即可。要连接它,您必须进入项目设置并将入口点设置为您的Main方法。

相关问题