我的任务是将VB项目从VS 2003升级到Vs2017。在尝试标准Visual Studio升级并收到许多问题之后,我着手研究。事实证明,根据我的研究,做到这一点的最佳方法是在VS 2017中创建一个新项目,然后将所有文件从旧项目复制到新项目中,然后解决错误。
我这样做了,并添加了必要的参考文献,更改了必要的途径,并惹恼了我,共收到11,118个错误。错误总数最大:
出现7235错误代码:BC31429-'object'模棱两可,因为 类“ class”中存在具有此名称的多种成员。
在2217错误处代码:BC30269-'function()'具有多个定义 具有相同的签名。
对我来说,这些错误表示各种重复。但是,我本人却找不到任何东西。我对这个专业还是有点绿色,所以我可能缺少明显的东西。
我的问题是:我错过了明显的事情吗?我已经将这个项目付诸实行了吗?我应该如何解决这个问题?
谢谢
编辑: 这些错误的一些例子
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
答案 0 :(得分:-1)
您正在尝试一次跨越许多技术变化的大跃进,无论是显性的还是微妙的。通过尝试先从VS 2003时代升级到VS 2010时代(例如,通过安装较旧版本的VS from here)来将升级分成几个步骤可能会更好。这样可以减少您最初遇到的错误数量,并允许您先解决这些错误(并可能防止多代错误相互影响),然后再进行后续升级(或升级到VS 2017)。