将 Resharper 外部注释 XML 文件复制到哪里 Visual Studio

Where to copy Resharper external annotation XML files to be found by Visual Studio

我已经为我的一个库创建了一个 XML 注释文件,并希望它可用于我的所有项目,而无需将其复制到每个项目二进制文件夹中。

据我所知,这可以通过将其复制到 Resharper 安装文件夹中来完成,但我尝试了几个地方都没有成功。

我已将其复制到以下文件夹中:

C:\Users\myuser\AppData\Local\JetBrains\Installations\ReSharperPlatformVs14\ExternalAnnotations\MyCompany

C:\Users\myuser\AppData\Local\JetBrains\ReSharper\vAny\vs14.0\Bin\ExternalAnnotations

xml文件与注释的dll同名,只是扩展名xml。内容如下:

<assembly name="Company.Tools.Libs.Logging">
  <member name="M:Company.Tools.Libs.Logging.Interfaces.IBasicLogger.WriteDebug(System.String,System.Object[])">
    <attribute ctor="M:JetBrains.Annotations.StringFormatMethodAttribute.#ctor(System.String)" />
    <argument>"format"</argument>
  </member>
  <member name="M:Company.Tools.Libs.Logging.Interfaces.IBasicLogger.WriteInfo(System.String,System.Object[])">
    <attribute ctor="M:JetBrains.Annotations.StringFormatMethodAttribute.#ctor(System.String)" />
    <argument>"format"</argument>
  </member>
  <member name="M:Company.Tools.Libs.Logging.Interfaces.IBasicLogger.WriteWarning(System.String,System.Object[])">
    <attribute ctor="M:JetBrains.Annotations.StringFormatMethodAttribute.#ctor(System.String)" />
    <argument>"format"</argument>
  </member>
  <member name="M:Company.Tools.Libs.Logging.Interfaces.IBasicLogger.WriteError(System.String,System.Object[])">
    <attribute ctor="M:JetBrains.Annotations.StringFormatMethodAttribute.#ctor(System.String)" />
    <argument>"format"</argument>
  </member>
  <member name="M:Company.Tools.Libs.Logging.Interfaces.IBasicLogger.WriteFatal(System.String,System.Object[])">
    <attribute ctor="M:JetBrains.Annotations.StringFormatMethodAttribute.#ctor(System.String)" />
    <argument>"format"</argument>
  </member>
</assembly>

我在这里错过了什么?

更新:

正如@citizenmatt 所说,我的 xml 是错误的,参数节点需要嵌套在属性元素中。使用一个我用来复制问题的简单项目来完成此操作,但这是通过在与 dll 相同的文件夹中创建外部注释并使用 .ExternalAnnotation 前缀来实现的。

我仍在尝试找出将它复制到我的机器上的位置,以便 Resharper 选择它而不将它分发到 dll 中。

更新 2:

在与@citizenmatt 讨论后,我决定将我的注释与 dll 一起发送。他有一个很好的观点,将它添加到 Resharper 的安装目录中将使它们在每个新安装中消失,而且它不是一个非常直观的地方。另外,我无法让 VS 从那里获取我的注释。

如果我没记错的话,我认为它应该在ExternalAnnotations的子文件夹中。您还需要关闭并重新打开您的解决方案,然后它才会被提取。

您也可以将文件放在 .dll 旁边,只要它以 .ExternalAnnotations.xml 结尾即可,例如foo.dll 需要 foo.ExternalAnnotations.dll.

或者,您可以在扩展中发送注释。这被打包为具有自定义文件布局的 nuget 包。您可以查看 nuspec file 示例的社区扩展项目(如果您的程序集是 public 程序集,您甚至可能想要添加拉取请求!)

但是,您在此处显示的示例 XML 是不正确的 - argument 元素需要是 [=16= 的 child ] 元素。它告诉 ReSharper 如何构建一个应该应用的参数 - ctor 属性为 ReSharper 提供构造函数(和 class),然后我们需要将参数传递给该构造函数 - 所以每个 argument 元素需要是 attribute 元素的子元素。换句话说:

<member name="M:Company.Tools.Libs.Logging.Interfaces.IBasicLogger.WriteDebug(System.String,System.Object[])">
<attribute ctor="M:JetBrains.Annotations.StringFormatMethodAttribute.#ctor(System.String)">
  <argument>format</argument>
</attribute>