2010-06-25 31 views
6

我只是有這個而重構一些舊的(因此VB.NET)單元測試,在這裏我想註釋掉的樣品輸入MbUnit的一個扔一個編譯錯誤:VB.NET不允許通過註釋行來繼續行嗎?

<RowTest> _ 
'<Row("Something")> _ 
<Row("SomethingElse")> _ 

這給了:

Attribute specifier is not a complete statement. Use a line continuation to apply the 
attribute to the following statement. 

它實際上是否將空白/註釋行視爲實際行嗎?一般來說,當我對VB.NET抱怨的時候,我在前面寫道:「現在,我不想成爲編寫他們語法的人,但是......」這似乎是其中一種我不知道回答,如果我是對的。但在這種情況下,我確實想知道答案。

+3

這是我們一直要求微軟修復多年的其中一件事。也許有一天... – 2010-06-26 05:37:24

+0

我認爲如果你在''''之前添加'_' *,你可以安全地註釋掉該行。所以只需在繼續行的開始處輸入'_''而不是''',當你想註釋掉它時。 (不知道'_''是否工作。) – 2013-05-14 05:29:31

回答

4

是的,據我所知,問題在於你的第一行連續將註釋掉的行添加爲第一行的一部分,然後註釋掉的行上的行連續字符被忽略,因爲它是評論所以它最終是:

<RowTest> '<Row("Something")> _ <-- this line continuation character is ignored since it's commented out. 
<Row("SomethingElse")> _ 

需要怎麼做才能支持,這將是結束除換行符以外的評論的方式,但它通常不是一個問題,我認爲這將影響編譯速度等等,因爲它會使它必須解析所有的評論,我認爲這不值得。

+1

嗯,這似乎符合:http://msdn.microsoft.com/en-us/library/aa711641(VS.71).aspx,它同意線延續被視爲正常的空白。我不是一個VB.NET程序員,我的知識大多是軼事。我更多地將它看作是「這個陳述沒有完成」,而不是「預處理器:刪除下面的新行」。謝謝! (我同意解析器速度評論) – 2010-06-25 22:00:53

0

我有一個.[Rem]擴展方法,允許流利的表達式就地「註釋掉」。您可以創建[Rem]屬性來執行相同的操作。

<Row> _ 
<[Rem]("<Row(""Something"")> _")> _ 
<RowTest("SomethingElse")> _ 
Sub Main 

End Sub 

' Define other methods and classes here 
<AttributeUsage(AttributeTargets.All, AllowMultiple:=True)> _ 
Class [Rem] 
    Inherits Attribute 
    Public Sub New() 
    End Sub 
    Public Sub New(Comment As String) 
    End Sub 
End Class 
+1

@Downvoter你只是不喜歡這種破解,或者有什麼我可以修復? – 2016-08-10 04:02:49

相關問題