2009-04-16 54 views
0

我已经将VB6项目转换为VB.NET,并且留下大量内联“警告消息”,如“UPGRADE_WARNING:Could not resolve default对象varJonSkeet的属性“,我想摆脱。有没有办法在Visual Studio 2008中做到这一点?使用正则表达式去除警告信息会更容易吗?我宁愿一次删除一个文件,但它不是一个破坏者。将vb6项目转换为VB.NET后简单的方法删除警告消息

回答

1

我相信他说他想要从他的代码中删除内联评论。

最快的方法是在UPGRADE_WARNING文件中执行查找:并手动删除它们。

或者,

您可以创建一个新的.NET程序通过每一个.vb文件源目录中的迭代和使用一个StreamReader读它们,然后在同一时间把它们写出来1号线到同一个文件当你去掉包含UPGRADE_WARNING:的任何行时。

如果你做第二种方式,你会更好地做了更多的vb.net编码。如果使用VS 2008


    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 
+0

我想我正在寻找太复杂的解决方案。用通配符搜索效果很好。在进行替换时,是否有办法删除该行而不是用空行替换它? – 2009-04-16 20:24:12

0

在VB.NET中重写项目。摆脱警告可能只是达到目标(我认为)是一个工作程序的一种手段。

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选项告诉它反转搜索结果,从而打印出不包含包含搜索模式的所有行。那些被写入新文件。然后用新的文件替换旧文件。

+0

我澄清了我的问题。我正在修复最初导致警告的内容,但是这并不会删除从代码添加的注释。 – 2009-04-16 20:09:22

5

快速和简单的修复,利用查找和替换

  • 打开查找选项
  • 点击 '使用',然后选择 '通配符'
  • 在'查找内容'中放置''升级警告*',并保留'替换为'空白
  • 单击“全部替换”
0

上面提到的VS 2008方法不适用于VS 2010及更高版本。 2010 VS后来按照以下步骤删除升级警告...

  1. CTRL + F
  2. 展开“查找...”下拉菜单,选择“在文件中查找...”。
  3. 选择“在文件中替换”选项卡。
  4. 查找内容:[^ \ S \ r \ n]'的UPGRADE_WARNING:*?\ r \ n
  5. 替换为:BLANK
  6. 展开 “查找选项”。
  7. 选中“使用正则表达式”。
  8. 开始搜索/替换/全部替换。

解释:使用正则表达式时,[^ \ S \ r \ n]的告诉正则表达式来忽略在该行的开头则显然是“UPGRADE_WARNING的空白,:是警告注释开始了寻找,然后。*告诉正则表达式忽略所有其他的* \ r?\ n,那么* \ r?\ n告诉正则表达式也匹配最后的换行符(没有这部分会留下一个空白行,每一个警告都会发生)。