【问题标题】:Turn 'MsgBox' into a compile error将 'MsgBox' 变成编译错误
【发布时间】:2016-05-02 07:46:50
【问题描述】:

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

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

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

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

我可以在 Visual Studio 中的错误中设置一个设置来禁止此操作吗?您可能会认为,在将其中的一些投入生产之后,那些愚蠢的程序员(呃,我的意思是,我)会明白这一点。他们古老的手指里面的vb6太多了……

【问题讨论】:

  • 您可以尝试删除Microsoft.VisualBasic 程序集引用。
  • 我建议您花点时间学习使用合适的记录器库。
  • @steve - 这是关于用户交互的;我们有一个日志库 thx
  • @sam - 如果组织能够简单地... 完全删除 Visual Basic ,我会很高兴 ;-) 不过,这不在我的控制之下。不过,程序中到处都是其他 VB 库的东西,比如 mid(是的,我们知道 substr ......)和其他 20 个。哦,好吧...
  • 对不起,那我还没有理解这些消息的作用。我认为它们是出于调试目的而存在的,当您编译生产代码时,您希望在任何地方删除它们。

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


【解决方案1】:

您可以将以下模块添加到您的项目中。它包括一个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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多