VB developers have always used the #IF compiler directive to include or esclude portions of code from the application. The problem with this directive is that you can easily exclude a procedure with a single directive, but it isn’t easy to discard all the calls to that procedure (which would raise a compilation error if you discard the target procedure).
VB.NET gives you a great alternative by means of the Conditional attribute. If you mark a procedure with this attribute the procedure itself will NOT be discarded, but all the calls to it will:
Sub LogMsg(ByVal MsgText As String) Console.WriteLine(MsgText)End SubSub TestConditionalAttribute() LogMsg("Program is starting") ' .. LogMsg("Program is ending")End Sub
You can define compilation constants – LOG in the above case – in the Build page of the Project Properties dialog box. You can also use the already-defined TRACE and DEBUG compilation constants. Because the compiler can drop all the calls to the target method- LogMsg, in precedingvious example – the Conditional attribute can only work only with procedures that don’t return a value. If your programming logic requires that a value be returned to the caller, you can use ByRef arguments.