2

我们应用程序的一部分使用了使用 CodeDom 生成的代码。此代码不需要 Xml 注释,因此我们想添加一个

#pragma warning disable 1591 

到那些生成的文件。CodeDom 是否可以做到这一点,如果没有,那么关于如何实现这一点还有其他建议吗?

4

2 回答 2

4
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);

(根本)不能很好地翻译成其他语言。YMMV-伊恩

于 2010-01-12T01:52:33.423 回答
0

查看所有反射器代码,没有任何东西弹出“正确”的方式。但是,如果您愿意进行一些后期处理,可能会有一种方法。使用 RegionDirective,在 RegionText 值中放置一个特殊标记。然后,一旦您的代码生成,返回并进行字符串替换。

由于我在代码中没有看到任何强制匹配代码区域的内容,因此您可以在末尾有一个起始代码区域以再次启用警告。

例如。您的令牌可能是“#PRAGMA1591”和“#ENABLEWARNINGS”。因此,生成代码后,您将拥有

#region #PRAGMA1591

...

#region #WARNINGRESTORE
#endregion

然后你会做一个字符串替换来产生这个:

#region Disable Warning 1591
#pragma warning disable 1591

...

#pragma warning restore
#endregion

您的字符串扩展如下:

  • PRAGMA1591 -> 忽略缺少 XML 文档 \n #pragma 警告

    禁用 1591
  • 区域 #WARNINGSRESTORE -> #pragma 警告恢复

于 2009-04-14T17:59:48.147 回答