2010-06-25 30 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

相关问题