我为我的一个库创建了一个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从那里得到我的注释。
答案 0 :(得分:3)
如果我没记错的话,我认为它需要位于ExternalAnnotations
的子文件夹中。在获取解决方案之前,您还需要关闭并重新打开解决方案。
您也可以将文件发送到.dll旁边,只要它以.ExternalAnnotations.xml
结尾,例如foo.dll
需要foo.ExternalAnnotations.dll
。
或者,您可以在扩展中发送注释。这被打包为具有自定义文件布局的nuget包。您可以查看社区扩展项目以获取g_main_context_invoke()的示例(如果您的程序集是公共程序集,您甚至可能想要添加拉取请求!)
但是,您在此处显示的示例XML不正确 - argument
元素必须是attribute
元素的子。它告诉ReSharper如何构建一个应该应用的参数 - ctor
属性为ReSharper提供构造函数(和类),然后我们需要将参数传递给该构造函数 - 所以每个{{1元素需要是argument
元素的子元素。换句话说:
attribute