以非侵入性的方式为自己的代码添加Resharper代码注释

本文关键字:代码 自己的 添加 Resharper 注释 方式 | 更新日期: 2023-09-27 18:06:11

我想用StringFormatMethod属性标记我的一个方法,以便Resharper语法突出显示它。

我能够通过引用JerBrains来做到这一点。注释汇编和添加属性。

然而,我发现这是一种非常侵入性的方式。并不是这里的每个人都使用JetBrains,它需要将.dll提交到subversion,添加依赖,并在代码中添加特定于特定IDE的东西,这是我讨厌的。

我读到"外部注释"功能,但我无法做到。我不确定是否我做错了,或者如果它根本不支持解决方案内的项目(即不是编译的程序集引用)。

那么是否有一种方法可以以非侵入性的方式向项目中的方法添加代码注释?

p。这就是方法:

使用系统;

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>

以非侵入性的方式为自己的代码添加Resharper代码注释

总结一下可能性:

  • 您引用nuget Jetbrains.Annotations,而不定义JETBRAINS_ANNOTATIONS:这样的注释仅对使用源代码的开发人员有用,它们不会在二进制文件中编译(使用条件语句),并且在引用dll时不可见。您甚至可以在包中添加developmentOnly="true"属性到Jetbrains.Annotations

  • 您参考上述内容,但定义JETBRAINS_ANNOTATIONS:现在你有了真正的二进制依赖,Jetbrains.Annotations.dll必须和你的库一起发布,或者必须作为nuget依赖下载。

  • 将选中internal的注释复制到"YourLib"中(因此客户端代码不会使用它们)。注释":它们被嵌入到你的库中,并且可供其他开发人员使用,即使他们只使用二进制版本。

  • 您提供外部注释:对于更大的库/更多的属性,这也可以消耗40k,它是单独的文件,通常创建/消耗更少。

我个人选择了第三个选项(对于共享库,项目通常只使用nugets)

您不必引用程序集来添加注释属性。根据文档,你可以去ReSharper/Options/Code Annotations,复制属性实现到剪贴板,并将它们粘贴到你自己的源代码中,ReSharper将使用它们。如果您不希望在程序集中使用JetBrains,您甚至可以更改它们所在的名称空间。

我不知道你是否会有任何运气使用外部(XML)注释的源代码,但是。我的印象是它们只适用于现有的二进制文件。也就是说,我认为用属性装饰源代码对于您自己和其他开发人员来说都是非常有价值的文档来源。

不知道是否有帮助,但是元素名称<assembley>拼写错误(除非他们在模式中实际使用了该名称)。应该是<assembly>