移动项目后,为什么VB.net编译器崩溃了?

时间:2009-05-21 22:31:20

标签: vb.net visual-studio-2008 migration crash

我正在将数据从旧笔记本电脑迁移到新笔记本电脑,包括在visual studio 2008中的一些vb.net项目。但是当我尝试在新笔记本电脑上打开其中一些时,我很快得到一个对话框,说明vb编译器已崩溃并询问我是否要关闭,调试或在线检查解决方案。然后,视觉工作室令人沮丧地关闭。

在旧笔记本电脑上打开项目时不会崩溃,其他迁移的项目会在不崩溃的情况下打开。因此,必须通过移动它们来破坏项目的某些属性。

我已经完成了搜索,发现了有类似问题的人发帖,但没有答案。为什么会发生这种情况,我该如何解决?

错误详情:

Problem signature:
  Problem Event Name:   APPCRASH
  Application Name: devenv.exe
  Application Version:  9.0.21022.8
  Application Timestamp:    47317b3d
  Fault Module Name:    kernel32.dll
  Fault Module Version: 6.0.6001.18215
  Fault Module Timestamp:   4995344f
  Exception Code:   e06d7363
  Exception Offset: 0002f328
  OS Version:   6.0.6001.2.1.0.768.3
  Locale ID:    4105

Additional information about the problem:
  LCID: 1033

Read our privacy statement:
  http://go.microsoft.com/fwlink/?linkid=50163&clcid=0x0409

旧笔记本电脑是windows xp并使用visual studio professional。新的笔记本电脑是Windows Vista,并使用视觉工作室团队。 “迁移”是源文件的直接复制粘贴。

2 个答案:

答案 0 :(得分:2)

项目文件可能引用了不再存在的位置(即它位于旧笔记本电脑上而不是新笔记本电脑上)。例如,驱动器是不同的(D:在一个和C:在另一个上)?

答案 1 :(得分:1)

项目崩溃,因为任何等同于以下代码片段的内容都会导致VS2008崩溃,但不会导致VS2008 SP1崩溃:

Public Class B(Of T)
    Protected Function P(ByVal arg As T) As Boolean
    End Function
End Class
Public Class C
    Inherits B(Of Integer)
    Private Sub New(ByVal arg As Integer)
        Dim d = Function() P(arg)
    End Sub
End Class

注意:

  • 升级到SP1可以解决问题。
  • “布尔”或“整数”没有什么特别之处,它们只是方便的类型
  • 将两个子组合成一个类会使bug消失。
  • 在基类函数中使用非泛型参数会使错误消失。
  • 在子类中使用非构造函数sub会使错误消失。
  • 错误的天真C#转换不会导致C#编译器崩溃。

我终于可以把它归咎于编译器了。不是我的错!