【问题标题】:How to investigate VB.NET not running on a fresh host?如何调查未在新主机上运行的 VB.NET?
【发布时间】:2011-11-03 14:34:45
【问题描述】:

在 XPSP3 主机上成功运行使用 Visual Basic 2008 Express Edition 编写的应用程序后,我将 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

【问题讨论】:

  • 您是否部署了带有可执行文件的 .PDB?
  • 我的第一步是确保新主机支持用于创建应用程序的框架(例如,您需要 .NET 4,但主机只有 2.0?)
  • 感谢您的提示。我添加了 PDB 文件,并且 Windows7 安装了 .Net 4,但我得到了同样的错误。
  • 根据 ILSpy (wiki.sharpdevelop.net),它需要 .Net framework 2.0 ... Windows7 说在我运行 dotnetfx.exe 时已经安装了

标签: vb.net


【解决方案1】:

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

【讨论】:

  • 感谢您的帮助。添加另一个例程来处理 AppDomain.CurrentDomain.UnhandledException 后,它表明我缺少 Microsoft.VisualBasic.PowerPacks.Vs 9.0.0.0。我将阅读有关如何检查依赖项以及如何分发它们的信息。
  • 确实,只需将 Microsoft.VisualBasic.PowerPacks.Vs.dll 复制到应用程序所在的同一目录中即可解决问题。新手今天学到了一些重要的东西:-)
  • @user148523:太好了!您应该发布自己的答案并将其标记为正确答案。感谢您的支持。
猜你喜欢
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 2012-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-12
相关资源
最近更新 更多