c# - 以非侵入方式为自己的代码添加Resharper代码注解

标签 c# resharper syntax-highlighting

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

我能够通过引用 JerBrains.Annotations 程序集并添加属性来做到这一点。

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

我读到了“外部注释”功能,但我做不到。我不确定是我做错了,还是解决方案中的项目根本不支持它(即不是已编译的程序集引用)。

那么有没有办法在项目中以非侵入的方式给方法添加代码注解呢?

P.S 这是方法:

使用系统;

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>

最佳答案

只是总结可能性:

  • 您引用 nuget Jetbrains.Annotations,并且不要定义 JETBRAINS_ANNOTATIONS: 此类注释仅对使用源代码的开发人员有用,它们不会在您的二进制文件中编译(使用条件语句),并且在引用您的 dll 时不可见。您甚至可以将 developmentOnly="true" 属性添加到 packages.config 中的 Jetbrains.Annotations,因此默认情况下它不会被视为依赖项。

    <
  • 您如上引用但定义JETBRAINS_ANNOTATIONS: 现在您有了真正的二进制依赖项,Jetbrains.Annotations.dll 必须与您的库一起分发,或者必须作为 nuget 依赖项下载。

  • 您将选中 internal 的注释复制到“YourLib.Annotations”:然后将它们嵌入到您的库中并可供其他开发人员使用,即使他们只使用二进制版本。

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

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

关于c# - 以非侵入方式为自己的代码添加Resharper代码注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15679473/

相关文章:

swift - Xcode 将所有符号标记为 'undeclared type' 但它们是可见的并且项目编译正常

c# - 具有 [ThreadStatic] 属性的静态变量是否在 AppDomain 之间共享

c# - SQL Server + Entity Framework 基础知识

c# - "MouseDown+=new MouseEventHandler(mouseDown)"和 MouseDown+=mouseDown 有什么区别

c# - 表达式树不能包含对局部函数的引用

c# - 用于自动 INotifyPropertyChanged 实现的 Resharper 模板

Vim 不一致地语法高亮 bash 文件

用于在 BlogSpot 上写博客的 C# 语法荧光笔

c# - 使 AForge VideoCaptureDevice 与 Unity 一起工作

c# - 更改图表控件轴颜色?