我想用 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/