我已经将一个VB6项目转换为VB.NET,并留下了大量的内联“警告消息”,例如“UPGRADE_WARNING:无法解析对象varJonSkeet的默认属性”,我想摆脱它。有没有办法在Visual Studio 2008中执行此操作?使用正则表达式删除警告消息会更容易吗?我宁愿一次删除一个文件,但它不是一个破坏者。
答案 0 :(得分:5)
使用VS 2008快速简单地修复,使用查找和替换:
答案 1 :(得分:2)
摆脱警告的最佳方法是解决警告所抱怨的可疑代码。也就是说,更改代码使其不再警告值得。不要只是试图完全禁用警告的产生。
您需要提供有关您关注的特定警告的更多详细信息以及随附的代码。但请记住先在这里搜索以前的答案。
我看到警告实际上是代码中的文本,而不是编译器输出中发出的消息。摆脱这些的方法是搜索关键字( UPGRADE_WARNING ,我猜),考虑它所警告的问题是否已经解决或仍然是一个有效的问题,解决问题,如果有是一个,删除警告线。例如,varJonSkeet
是否是默认属性,如果没有,是否需要一个?您是否应该使用非默认属性? (你真的不会问如何删除一行文字,不是吗?)
如果您已经浏览了整个文件并确定没有任何警告有效,则可以快速删除所有警告线。
grep -v UPGRADE_WARNING input_file.vb > output_file.vb ren output_file.vb input_file.vb
如果您的系统上还没有grep
,那么您还没有完整的开发环境。 Go get a copy. -v
选项告诉它反转搜索结果,从而打印不包含搜索模式的所有行。那些被写入新文件。然后用新文件替换旧文件。
答案 2 :(得分:1)
我相信他说他想从他的代码中删除内联评论。
最快的方法是在文件中为UPGRADE_WARNING执行查找:并手动删除它们。
或者,
您可以创建一个新的.Net程序来遍历源目录中的每个.vb文件,并使用StreamReader读取它们,然后一次将它们写出一行到同一个文件中,然后省略任何行包含UPGRADE_WARNING:。
如果你采用第二种方式,那么你可以更好地完成更多的vb.net编码。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim FileName As String = "c:\form1.vb"
Dim SourceFile As System.IO.FileInfo = New FileInfo(FileName)
Dim SourceTextStream As System.IO.TextReader = SourceFile.OpenText()
Dim SourceFileContent() As String = Split(SourceTextStream.ReadToEnd(), vbCrLf)
SourceTextStream.Close()
Dim CurrentSourceLine As String
Dim CurrentSourceLineNumber As Long
Dim DestStream As StreamWriter = New StreamWriter(FileName)
Dim LogStream As StreamWriter = New StreamWriter(FileName + ".log")
For Each CurrentSourceLine In SourceFileContent
CurrentSourceLineNumber += 1
If InStr(CurrentSourceLine, "UPGRADE_WARNING") = 0 Then
DestStream.WriteLine(CurrentSourceLine)
Else
' Write to Log File
LogStream.WriteLine("Line Skipped at number: " + CurrentSourceLineNumber.ToString())
End If
Next
DestStream.Close()
LogStream.Close()
End Sub
答案 3 :(得分:0)
在VB.NET中重写项目。摆脱警告可能只是达到(我认为)是一个工作计划的目标的手段。
答案 4 :(得分:0)
上面提到的VS 2008方法不适用于VS 2010及更高版本。 对于VS 2010及更高版本,请按照以下步骤删除升级警告...
解释:使用正则表达式,[^ \ S \ r \ n]告诉正则表达式忽略行开头的空白区域,然后显然' UPGRADE_WARNING:警告注释的开始是寻找,然后。*告诉正则表达式忽略除了* \ r?\ n之外的所有其他内容,然后* \ r?\ n告诉正则表达式也匹配最后的换行符(没有这部分会留下一个每个警告都会出现的空行。