我们有一个应用程序,它可以在Winforms和Web UI之间共享几乎所有代码。在winforms版本上进行了更多测试(它使用了10倍以上)。
程序员继续将MsgBox放入共享代码中,因此在测试时,它似乎可行。 (好吧,程序员 me )(特定于平台的前端抽象出另一个正常使用的函数,它在两个平台上都显示正确的消息框样式弹出窗口。)
我通过共享代码中没有Winforms禁用了“Messagebox.Show”。但是Visual Basic很高兴地允许旧的vb6 msgbox,无论如何!
当然,IIS设法吞下它,但是,网络版上没有错误消息。
我可以在visual studio中设置错误设置以禁止此操作吗?你可能会认为,经过一些这些愚蠢的程序员(呃,我的意思是,我)将其投入生产之后会有所收获。他们古老的手指中有太多的vb6 ......
答案 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