将'MsgBox'变成编译错误

时间:2016-01-25 20:51:24

标签: asp.net vb.net winforms visual-studio

我们有一个应用程序,它可以在Winforms和Web UI之间共享几乎所有代码。在winforms版本上进行了更多测试(它使用了10倍以上)。

程序员继续将MsgBox放入共享代码中,因此在测试时,它似乎可行。 (好吧,程序员 me )(特定于平台的前端抽象出另一个正常使用的函数,它在两个平台上都显示正确的消息框样式弹出窗口。)

我通过共享代码中没有Winforms禁用了“Messagebox.Show”。但是Visual Basic很高兴地允许旧的vb6 msgbox,无论如何!

当然,IIS设法吞下它,但是,网络版上没有错误消息。

我可以在visual studio中设置错误设置以禁止此操作吗?你可能会认为,经过一些这些愚蠢的程序员(呃,我的意思是,我)将其投入生产之后会有所收获。他们古老的手指中有太多的vb6 ......

1 个答案:

答案 0 :(得分:0)

您可以将以下模块添加到项目中。它包含MsgBox函数,该函数不带参数并返回Boolean

如果您尝试在项目中使用MsgBox,编译器应该选择此版本而不是VB版本。 Intellisense将显示"不要使用VB MsgBox功能"信息。

如果忽略Intellisense并使用任何参数编写代码MsgBox,您将收到编译错误,因为函数不会接受任何参数。

如果您编写MsgBox没有参数(这似乎不太可能),它将编译,但即使在Windows窗体环境中运行也会抛出异常。

Module DisallowVB
    ''' <summary>DO NOT use the VB MsgBox function</summary>
    Function MsgBox() As Boolean
        Throw New NotImplementedException("MsgBox is not implemented in all cases")
    End Function
End Module