title: VS2005 Code Analysis: CA1063 (call dispose(true) and supress finalize) - with logging
body: <p>I'm trying to adhere to the VS2005 code analysis rules for a new project.  I have this method:</p>
  
  <pre><code>public void Dispose()
  {
      Console.WriteLine("Dispose() called");
      Dispose( true );
      GC.SuppressFinalize(this);
  }
  </code></pre>
  
  <p><em>(The console call will become a log4net call at some point, and we're always interested in logging dispose for some of our types).</em></p>
  
  <p>The presense of the console debug line triggers this error:</p>
  
  <p><em>Error  1   CA1063 : Microsoft.Design : Modify PerfectDisposableClass.Dispose():Void so that it calls Dispose(true), then calls GC.SuppressFinalize on the current object instance ('this' or 'Me' in VB), and then returns.    F:\Visual Studio 2005\Projects\DisposeAndFinalize\DisposeAndFinalize\PerfectDisposableClass.cs  26  DisposeAndFinalize</em></p>
  
  <p>Without resorting to pragma directives is there a way round this?  Perhaps writing my own rules?  Also, aer the existing rules in an assembly somewhere I can look at with reflector?</p>