我接管了VB.Net WinForms应用程序的支持。我实际上是一名c#开发人员,更熟悉c#项目中visual studio项目的设置。现在我试图确定我的应用程序崩溃在特定的XP安装上的原因,并且我在这里阅读了建议
在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);
}
}
答案 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)
编译器无法找到时自动生成,但您可以自己创建一个。
http://msdn.microsoft.com/en-us/library/ms235406%28v=VS.100%29.aspx
答案 3 :(得分:1)
今天我来到这个页面寻找答案,我在这里和代码项目中找到了一些好的。
当我满意自己,我知道该怎么做时,我手边还有一个简化的方法,使项目属性几乎不受影响。 (您必须关闭Application Framework,否则VB运行时将不会运行您的主例程!)简而言之,如果您在类模块中定义了Main
例程来定义您的启动窗体,Visual Basic运行时引擎将找到并执行它。
如上所述,您的例程必须定义为共享。您可以在How to Run a Particular Form in VB.NET
查看我的示例以及其他一些注释<强>买者强>
禁用“应用程序框架”时,将丢失“单实例”复选框。我刚刚完成了对引用示例的更新,以包含我开发和测试的代码以强制执行单个实例。
答案 4 :(得分:0)
您可以在任何地方创建该方法,只要它Shared
即可。要连接它,您必须进入项目设置并将入口点设置为您的Main方法。