Debug.Assert will be ignored if you do not have the DEBUG compilation constant defined, which by default occurs when compiling in the "debug" configuration, and not in the "release" configuration. Indeed, the Debug class is intended to be used only in test environments where you should catch all (or at least most) errors that could lead to a Debug.Assert error.
Trace.Assert works the same way, except that the compilation constant that must exist is TRACE, which by default exists in both "debug" and "release". It may make sense to validate the traces in the release code, but it is usually preferable to do something different than the default behavior of the method (which simply displays a message box with a trace stack). You can achieve this by setting up your own trace listener for the Trace class; see the documentation for the method for more details.
source share