.net - 将项目从 VS 2003 升级到 VS 2017
问题描述
我的任务是将一个 VB 项目从 VS 2003 升级到 Vs 2017。在尝试了标准的 Visual Studio 升级并收到许多问题后,我开始着手研究。事实证明,根据我的研究,最好的方法是在 VS 2017 中创建一个新项目,然后将旧项目中的所有文件复制到新项目中,然后解决错误。
我这样做并添加了必要的参考资料,更改了必要的途径,令我懊恼的是,收到了 11,118 个错误。最大的错误总和是:
在 7235 错误代码:BC31429 -“对象”不明确,因为在“类”类中存在多种具有此名称的成员。
在 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
解决方案
您正在尝试一次跨越许多技术变化的大跃进,无论是明确的还是微妙的。也许最好将升级分成几个步骤,首先尝试从 VS 2003 时代升级到 VS 2010 时代,方法是从这里安装旧版本的VS。这可能会减少您最初面临的错误数量,并允许您首先解决这些错误(并且可能防止多代错误相互交互),然后再进行后续升级(或升级)到 VS 2017。
推荐阅读
- c++ - 使用 Makefile 将不同文件夹中的多个 .cpp 编译到单个 build/ 目录
- c - 为什么我们仍然需要 read() 和 write() 系统调用,为什么我们不能用 ioctl 系统调用来替换它们?
- android - 由于 SDK 导致 Google Play 应用更新被拒绝,但并未真正包含在内
- c++ - 类 std::result_of 中没有名为“类型”的类型
- node.js - MongoDB 不会推送到数组
- javascript - 如何在 MongoDB 中自定义增量 ID 或数字?
- ios - UITableViewCell 高度根据行内容使用自动布局动态计算
- haskell - 函数重载
- c++ - 在 Ubuntu 中使用 clang 编译 c++17 代码时找不到 string_view
- swift - 在不创建新 UIImage/CGImage 的情况下更改 UIImage 的一个像素的颜色