我正在玩SpecFlow,而ReSharper认为我的步骤定义未使用(我猜因为它们是通过反射使用的):
[Binding]
public class StepDefinitions
{
// ...
[When(@"I press add")]
public void WhenIPressAdd() // R# thinks this is unused
{
_calculator.PressAdd();
}
// ...
}
如何告诉ReSharper实际使用[Given]
,[When]
,[Then]
属性(等)的方法?我不想使用// ReSharper disable UnusedMember.Global
条评论。
我还可以用[JetBrains.Annotations.UsedImplicitly]
标记每个方法(或整个类)。我也不是特别想这样做。
答案 0 :(得分:28)
您需要使用JetBrains Annotations,并使用MeansImplicitUseAttribute
标记该属性。您可以直接引用JetBrains.Annotations.dll
,也可以复制注释源代码(来自 ReSharper / 选项 / 代码检查 / < em>代码注释)到您的解决方案中。
如果需要注释一些您不拥有的外部程序集,则需要在以下文件夹中创建外部注释文件(xml):%ReSharperInstallDir%\Bin\ExternalAnnotations
。有很多例子,你可以复制一些。
如果您将外部注释文件命名为DllNameWithoutExtension.ExternalAnnotations.xml
,则外部注释文件也可以与DLL位于同一路径中。
答案 1 :(得分:9)
有很多例子,但如果你不想追查一个例子,我想要更加明确一些。 :)
在%ReSharperInstallDir%\ Bin \ ExternalAnnotations中创建一个带有属性程序集(.xml)名称的文件。例如,我制作了Microsoft.VisualStudio.QualityTools.CodedUITestFramework.xml并将此XML放入其中:
<assembly name="Microsoft.VisualStudio.QualityTools.CodedUITestFramework">
<member name="T:Microsoft.VisualStudio.TestTools.UITesting.CodedUITestAttribute">
<attribute ctor="M:JetBrains.Annotations.MeansImplicitUseAttribute.#ctor" />
</member>
</assembly>
重新启动VS,您就可以了!
答案 2 :(得分:0)
这些答案很有帮助,但值得注意的是,如果您想装饰一个界面,则需要使用UsedImplicitly
属性
[UsedImplicitly]
public interface ISomeInterface
{
//... stuff
}