tags:

views:

1767

answers:

2

A portion of our app uses code generated using CodeDom. This code does not need Xml Comments and so we would like to add a

#pragma warning disable 1591

to those generated files. Is this possible with CodeDom and if not, then are there other suggestions on how to accomplish this?

A: 

Looking through all the reflector code, nothing pops up as the "right" way. However, there might be a way if you are willing to do some post-generation processing. Using the RegionDirective, place a special token in the RegionText value. Then, once your code is generated, go back and do a string replace.

Since I didn't see anything in the code that enforces matching code regions, you could have a single start code region at the end to enable warnings again.

For example. your tokens could be "#PRAGMA1591" and "#ENABLEWARNINGS." Therefore, after the code is generated you would have

#region #PRAGMA1591

...

#region #WARNINGRESTORE
#endregion

You would then do a string replace to yield this:

#region Disable Warning 1591
#pragma warning disable 1591

...

#pragma warning restore
#endregion

Your strings expand like this:

  • #PRAGMA1591 -> Ignore Lack of XML Documentation \n #pragma warning disable 1591
  • #region #WARNINGSRESTORE -> #pragma warning restore
Erich Mirabal
+1  A: 
provider.GenerateCodeFromCompileUnit(
    new CodeSnippetCompileUnit("#pragma warning disable 1591"),
    sourceWriter, options);
provider.GenerateCodeFromCompileUnit(targetUnit, sourceWriter, options);
provider.GenerateCodeFromCompileUnit(
    new CodeSnippetCompileUnit("#pragma warning restore 1591"),
    sourceWriter, options);

Doesn't translate well (at all) to other languages. YMMV -Ian

Ian Sullivan