8

メソッドの 1 つに StringFormatMethod 属性を付けてフラグを立てたいので、Resharper 構文で強調表示します。

JerBrains.Annotations アセンブリを参照して属性を追加することで、これを行うことができました。

しかし、これは非常に侵略的な方法だと思います。ここにいる全員が JetBrains を使用しているわけではなく、.dll を subversion にコミットし、依存関係を追加し、特定の IDE に固有のものをコードに散らかす必要があります。

「外部注釈」機能について読みましたが、実行できませんでした。私が間違っていたのか、ソリューション内のプロジェクトでサポートされていないだけなのか (つまり、コンパイルされたアセンブリ参照ではないのか) はわかりません。

非侵襲的な方法でプロジェクトのメソッドにコード注釈を追加する方法はありますか?

PSこれは方法です:

システムを使用する;

namespace MyLib
{
    public static class Assert
    {
        public static void That(bool condition, string format, params object[] @params)
        {
            if (!condition)
                throw new Exception(string.Format(format, @params));
        }
    }
}

で、内容はこれ

C:\Program Files (x86)\JetBrains\ReSharper\v7.1\Bin\ExternalAnnotations\MyLib.xml:

<assembley name="MyLib">
    <member name="MyLib.Assert.That(System.Boolean,System.String,System.Object[])">
        <attribute ctor="M:JetBrains.Annotations.StringFormatMethodAttribute.#ctor">
            <argument>format</argument>
        </attribute>
    </member>
</assembley>
4

3 に答える 3

10

可能性を要約すると:

  • nugetJetbrains.Annotationsを参照し、定義しないでJETBRAINS_ANNOTATIONSください: このような注釈は、ソース コードを扱う開発者にのみ役立ちます。バイナリにコンパイルされず (条件ステートメントが使用されます)、dll を参照するときには表示されません。developmentOnly="true"packages.config に属性を追加することもできるJetbrains.Annotationsため、デフォルトでは依存関係として扱われません。

  • 上記のように参照しますが、次のように定義しますJETBRAINS_ANNOTATIONS 実際のバイナリ依存関係がありJetbrains.Annotations.dll、ライブラリと共に配布するか、nuget 依存関係としてダウンロードする必要があります。

  • 注釈をinternalチェック付きで (クライアント コードで使用されないように) 「YourLib.Annotations」にコピーします。その後、ライブラリに埋め込まれ、他の開発者がバイナリ バージョンのみを使用している場合でも使用できます。

  • 外部注釈を提供します。より大きなライブラリ/より多くの属性の場合、これも 40k を消費する可能性があり、別のファイルであり、一般的に作成/消費するのはそれほど簡単ではありません。

私は個人的に3番目のオプションを選択しました(共有ライブラリの場合、プロジェクトは通常ナゲットを使用するだけです)

于 2015-08-15T11:24:54.547 に答える
8

注釈属性を追加するためにアセンブリを参照する必要はありません。ドキュメントに従って、に移動しReSharper/Options/Code Annotations、属性の実装をクリップボードにコピーして、ReSharper が使用する独自のソースに貼り付けることができます。JetBrainsアセンブリに含めたくない場合は、名前空間を変更することもできます。

ただし、ソース コードに外部 (XML) 注釈を使用してうまくいくかどうかはわかりません。それらは既存のバイナリ専用であるという印象を受けます。とはいえ、ソースを属性で装飾することは、自分自身や他の開発者にとってドキュメントのソースとして非常に価値があると思います。

于 2013-03-28T11:11:43.717 に答える