19

これは、Visual Studio 2008 について尋ねられたこの質問を再質問しているだけです。VS2010 には、自動生成されたコードに対する CS1591 コンパイラの警告を取り除く機能が用意されていますか?

CS1591: Missing XML comment for publicly visible type or member

VS2008 の質問を引用するには:

これは問題というより厄介です。私のプロジェクトには、(mgmtclassgen.exe を使用して) 自動生成された多数のファイルが含まれています。XML ドキュメントを生成すると、美しくコメントされたライブラリが、これらの autogen ファイルからの xml ドキュメントの警告に悩まされます。

a) これらのファイルのドキュメントの生成を抑制する方法、または b) 一連のファイルに対してのみ警告 CS1591 を抑制する方法はありますか? 抑制プラグマを追加するだけでも、自動生成されたファイルを変更したくないことは明らかです。

編集: 私の場合、問題のあるファイルは WCF RIA サービスによって生成されるため、エラーを生成しているファイルは自動生成された WebContext クラス ( MyProject.BusinessApplication.Web.g.cs) です。

このファイルはオンザフライで生成されるため、手動で変更することはできません。すべての変更は消去されます。また、自動生成されていないコードで役立つため、警告をグローバルに無効にしたくありません。

4

4 に答える 4

12

自動生成されたエンティティ フレームワーク クラスで同様の問題が発生していました。テンプレートファイルを修正することで解決できました。これは明らかに、自動生成されたすべてのシナリオで機能するわけではなく、特定の RIA シナリオには当てはまらない可能性がありますが、同じ問題を抱えている可能性のある他の人のためにここに投稿します.

テンプレート ファイル (something.tt) を開き、自動生成された xml コメント セクションを見つけます。

//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

コメント ブロックの直後に次の行を追加します。

#pragma warning disable 1591 

その少し下に、名前空間ブロックが終了する場所があるはずです。だいたいこんな感じになります

if (!String.IsNullOrEmpty(ObjectNamespace))
{
    PopIndent();
#>
}

その右中括弧の後に次の行を配置します

#pragma warning restore 1591

すべてが正しく機能した場合、クラスが Entity Framework によって自動生成されるたびに、disable/restore プラグマ ステートメントでラップする必要があります。これにより、プロジェクト レベルでの警告を抑制せずに、EF クラスに XML コメントがないことに関する警告が抑制されます。

于 2012-08-08T15:55:38.067 に答える
2

次の記事は、問題を解決するためのいくつかのヒントを引き起こす可能性があります: http://lvquoc.blogspot.com/2010/11/disable-xml-comment-warning-in-workflow.html

この記事の重要な部分は、Alan McBee によるコメントです。Windows ワークフロー VS2012+ で生成された警告を無効にするには、これをプロジェクト ファイルの最後に追加します。

<Target Name="XamlGeneratedCodeWarningRemoved" AfterTargets="MarkupCompilePass2">
  <Exec Command="for %%f in (@(_GeneratedCodeFiles)) do echo #pragma warning disable 1591 > %%f.temp" />
  <Exec Command="for %%f in (@(_GeneratedCodeFiles)) do type %%f >> %%f.temp" />
  <Exec Command="for %%f in (@(_GeneratedCodeFiles)) do echo #pragma warning restore 1591 >> %%f.temp" />
  <Exec Command="for %%f in (@(_GeneratedCodeFiles)) do move /y %%f.temp %%f" />
  <Message Text="Xaml Generated Code Warnings Removed: @(_GeneratedCodeFiles)" />
</Target>
于 2010-12-01T17:45:47.997 に答える
1

Quam Locのソリューションと同様に、ビルドターゲットを使用してRIAで生成されたファイルの警告を無効にすることができます。

<Target Name="CreateRiaClientFilesTaskDisableWarnings" AfterTargets="CreateRiaClientFiles">
  <Exec Command="for %%f in (@(RiaClientGeneratedFiles)) do echo #pragma warning disable &gt; %%f.temp" />
  <Exec Command="for %%f in (@(RiaClientGeneratedFiles)) do type %%f &gt;&gt; %%f.temp" />
  <Exec Command="for %%f in (@(RiaClientGeneratedFiles)) do attrib -r %%f" />
  <Exec Command="for %%f in (@(RiaClientGeneratedFiles)) do move /y %%f.temp %%f" />
  <Exec Command="for %%f in (@(RiaClientGeneratedFiles)) do attrib +r %%f" />
  <Message Text="CreateRiaClientFilesTaskDisableWarnings: @(RiaClientGeneratedFiles)" />
</Target>

ブログに投稿しました。

于 2012-05-09T09:44:16.477 に答える