如何调查VB.NET未在新主机上运行?

如何调查VB.NET未在新主机上运行?,vb.net,Vb.net,在XPSP3主机上成功运行用编写的应用程序后,我将EXE文件复制到新的Windows 7主机上。。。它在没有太多信息的情况下崩溃了: 说明: 停止工作 问题签名: 问题事件名称:CLR20r3 问题签名01:myapp.exe 问题签名02:1.0.0.0 问题签名03:4eb2a385 问题签名04:myapp 问题签名05:1.0.0.0 问题签名06:4eb2a385 问题签名07:f 问题签名08:c6 问题签名09:System.InvalidOperationException 操作

在XPSP3主机上成功运行用编写的应用程序后,我将EXE文件复制到新的Windows 7主机上。。。它在没有太多信息的情况下崩溃了:

说明: 停止工作

问题签名:

问题事件名称:CLR20r3

问题签名01:myapp.exe

问题签名02:1.0.0.0

问题签名03:4eb2a385

问题签名04:myapp

问题签名05:1.0.0.0

问题签名06:4eb2a385

问题签名07:f

问题签名08:c6

问题签名09:System.InvalidOperationException

操作系统版本:6.1.7600.2.0.0.256.1

区域设置ID:1033

我可以采取哪些步骤来调查为什么VB.NET应用程序不能在不同的主机上运行


这是因为缺少依赖项。要捕获此类错误,请将以下内容添加到Form1:

Public Sub New()
    AddHandler Application.ThreadException, AddressOf OnThreadException
    AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledExceptionEventRaised

    InitializeComponent()
End Sub

Private Sub UnhandledExceptionEventRaised(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs)
    If e.IsTerminating Then
        Dim o As Object = e.ExceptionObject
        MessageBox.Show(o.ToString) ' use EventLog instead
    End If
End Sub

Private Sub OnThreadException(ByVal sender As Object, _
                   ByVal e As ThreadExceptionEventArgs)
    ' This is where you handle the exception
    MessageBox.Show(e.Exception.Message)
End Sub

由于您使用的是Express Edition,因此无法使用远程调试。使用
Try…Catch
包装敏感代码,并将异常写入日志或。

由于您使用的是Express Edition,因此无法使用远程调试。使用
Try…Catch
包装敏感代码,并将异常写入日志或。

是否部署了带有可执行文件的.PDB?我的第一步是确保用于创建应用程序的框架在新主机上受支持(例如,您是否需要.NET 4,但主机只有2.0?),谢谢提示。我添加了PDB文件,Windows7安装了.NET4,但我得到了相同的错误。根据ILSpy(),它需要.NETFramework 2.0。。。当我运行dotnetfx.exe时,Windows7说哪个已经安装了?可能的重复项您是否部署了带有可执行文件的.PDB?我的第一步是确保用于创建应用程序的框架在新主机上受支持(例如,您是否需要.NET 4,但主机只有2.0?),谢谢提示。我添加了PDB文件,Windows7安装了.NET4,但我得到了相同的错误。根据ILSpy(),它需要.NETFramework 2.0。。。Windows7说在我运行dotnetfx.exe时已经安装了,可能是重复的,谢谢您的帮助。在添加另一个例程来处理AppDomain.CurrentDomain.UnhandledException之后,它显示我缺少Microsoft.VisualBasic.PowerPacks.Vs 9.0.0.0。我将阅读有关如何检查依赖项以及如何分发依赖项的内容。事实上,只需将Microsoft.VisualBasic.PowerPacks.Vs.dll复制到应用程序所在的同一目录中,就可以解决问题。新手今天学到了一些重要的东西:-)@user148523:太好了!你应该张贴自己的答案,并将其标记为正确答案。谢谢你的支持,谢谢你的帮助。在添加另一个例程来处理AppDomain.CurrentDomain.UnhandledException之后,它显示我缺少Microsoft.VisualBasic.PowerPacks.Vs 9.0.0.0。我将阅读有关如何检查依赖项以及如何分发依赖项的内容。事实上,只需将Microsoft.VisualBasic.PowerPacks.Vs.dll复制到应用程序所在的同一目录中,就可以解决问题。新手今天学到了一些重要的东西:-)@user148523:太好了!你应该张贴自己的答案,并将其标记为正确答案。谢谢你的投票。