2010-06-25 13 views
6

Ho appena avuto questo gettare un errore di compilazione, mentre il refactoring alcuni legacy (da qui VB.NET) test di unità, dove ho voluto commentare appena fuori uno degli ingressi del campione a MBUnit:VB.NET non consente la continuazione della linea su righe con commento?

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

che ha dato:

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

In realtà tratta lo spazio bianco/linea commentata come una linea effettiva? In genere, quando mi lamenta di VB.NET, lo premetto con "Ora, non vorrei essere il ragazzo a scrivere la loro grammatica, ma ..." Sembra uno di quei casi in cui non conosco il rispondi, se ho ragione. Ma so che voglio sapere la risposta, in questo caso.

+3

Questa è una di quelle cose che abbiamo chiesto a Microsoft di risolvere per anni. Forse un giorno ... –

+0

Penso che si possa tranquillamente commentare la riga se si aggiunge un '_' * prima di * the' ''. Quindi basta digitare '_ '' invece di ''' all'inizio di una linea continua quando vuoi commentarlo. (Non sono sicuro che '_'' funzioni.) –

risposta

4

Sì, per quanto ho capito, il problema è che la continuazione della prima riga aggiunge la riga commentata come parte della prima riga, e quindi il carattere di continuazione della linea sulla riga commentata viene ignorato poiché fa parte di un commento in modo che finisce per essere:

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

cosa sarebbe necessario per supportare questo sarebbe un modo per terminare un commento diverso da un ritorno a capo, ma come di solito non è un problema e penso che potrebbe influenzare la compilazione velocità ecc. un bel po 'dal momento che renderebbe necessario analizzare tutti i commenti, suppongo che non sia visto come utile.

+1

Hm, questo sembra in linea con: http://msdn.microsoft.com/en-us/library/aa711641(VS.71).aspx, che accetta le continuazioni di riga sono trattati come normali spazi bianchi. Non sono un programmatore VB.NET e la mia conoscenza è per lo più aneddotica. Lo stavo trattando più come un, "questa affermazione non è fatta" di un "Preprocessore: rimuovi la nuova riga seguente". Grazie! (Sono d'accordo con il commento sulla velocità del parser) –

0

Ho un metodo di estensione .[Rem] per consentire il "commenting out" sul posto delle espressioni fluenti. È possibile creare un attributo [Rem] per fare la stessa cosa.

<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 Ti piace solo questo trucco, o c'è qualcosa che posso risolvere? –

Problemi correlati