首页 > 解决方案 > 将项目从 VS 2003 升级到 VS 2017

问题描述

我的任务是将一个 VB 项目从 VS 2003 升级到 Vs 2017。在尝试了标准的 Visual Studio 升级并收到许多问题后,我开始着手研究。事实证明,根据我的研究,最好的方法是在 VS 2017 中创建一个新项目,然后将旧项目中的所有文件复制到新项目中,然后解决错误。

我这样做并添加了必要的参考资料,更改了必要的途径,令我懊恼的是,收到了 11,118 个错误。最大的错误总和是:

  1. 在 7235 错误代码:BC31429 -“对象”不明确,因为在“类”类中存在多种具有此名称的成员。

  2. 在 2217 错误代码:BC30269 - 'function()' 有多个具有相同签名的定义。

对我来说,这些错误表明存在某种重复。然而,我自己还没有找到任何关于这个主题的东西。我对这个职业还是有点陌生​​,所以我可能会遗漏一些明显的东西。

我的问题是:我是否遗漏了一些明显的东西?我对这个项目进行了 FUBAR 吗?我应该如何解决这个问题?

谢谢

编辑:这些错误的一些示例

Code: BC31429

Return Me.tableNotes

尽管在其类中只有一个引用,但仍返回错误。但是,在另一个类中存在另一个具有相同名称和类型的实例。两者都是私人的,所以我认为他们不应该互相干扰。

Code: BC30269

Public Sub New()
        MyBase.New
        Me.InitClass
        Dim schemaChangedHandler As System.ComponentModel.CollectionChangeEventHandler = AddressOf Me.SchemaChanged
        AddHandler Me.Tables.CollectionChanged, schemaChangedHandler
        AddHandler Me.Relations.CollectionChanged, schemaChangedHandler
    End Sub

    Protected Sub New(ByVal info As SerializationInfo, ByVal context As StreamingContext)
        MyBase.New
        Dim strSchema As String = CType(info.GetValue("XmlSchema", GetType(System.String)),String)
        If (Not (strSchema) Is Nothing) Then
            Dim ds As DataSet = New DataSet
            ds.ReadXmlSchema(New XmlTextReader(New System.IO.StringReader(strSchema)))
            If (Not (ds.Tables("Notes")) Is Nothing) Then
                Me.Tables.Add(New NotesDataTable(ds.Tables("Notes")))
            End If
            Me.DataSetName = ds.DataSetName
            Me.Prefix = ds.Prefix
            Me.Namespace = ds.Namespace
            Me.Locale = ds.Locale
            Me.CaseSensitive = ds.CaseSensitive
            Me.EnforceConstraints = ds.EnforceConstraints
            Me.Merge(ds, false, System.Data.MissingSchemaAction.Add)
            Me.InitVars
        Else
            Me.InitClass
        End If
        Me.GetSerializationData(info, context)
        Dim schemaChangedHandler As System.ComponentModel.CollectionChangeEventHandler = AddressOf Me.SchemaChanged
        AddHandler Me.Tables.CollectionChanged, schemaChangedHandler
        AddHandler Me.Relations.CollectionChanged, schemaChangedHandler
    End Sub

    <System.Diagnostics.DebuggerStepThrough()>  _
    Public Class NotesDataTable
        Friend Sub New()
            MyBase.New("Notes")
            Me.InitClass
        End Sub

        Friend Sub New(ByVal table As DataTable)
            MyBase.New(table.TableName)
            If (table.CaseSensitive <> table.DataSet.CaseSensitive) Then
                Me.CaseSensitive = table.CaseSensitive
            End If
            If (table.Locale.ToString <> table.DataSet.Locale.ToString) Then
                Me.Locale = table.Locale
            End If
            If (table.Namespace <> table.DataSet.Namespace) Then
                Me.Namespace = table.Namespace
            End If
            Me.Prefix = table.Prefix
            Me.MinimumCapacity = table.MinimumCapacity
            Me.DisplayExpression = table.DisplayExpression
        End Sub
    End Class

标签: .netvb.netvisual-studio-2017upgradevisual-studio-2003

解决方案


您正在尝试一次跨越许多技术变化的大跃进,无论是明确的还是微妙的。也许最好将升级分成几个步骤,首先尝试从 VS 2003 时代升级到 VS 2010 时代,方法是从这里安装旧版本的VS。这可能会减少您最初面临的错误数量,并允许您首先解决这些错误(并且可能防止多代错误相互交互),然后再进行后续升级(或升级)到 VS 2017。


推荐阅读