2010-05-20 13 views
25

estoy jugando con SpecFlow y ReSharper piensa que mis definiciones paso no se utilizan (supongo que porque están acostumbrados a través de la reflexión):¿Cómo le digo a ReSharper que un atributo significa que se usa un método?

[Binding] 
public class StepDefinitions 
{ 
    // ... 

    [When(@"I press add")] 
    public void WhenIPressAdd() // R# thinks this is unused 
    { 
     _calculator.PressAdd(); 
    } 

    // ... 
} 

¿Cómo puedo saber que los métodos ReSharper con [Given], [When], [Then] atributos (etc.) en realidad se utilizan? No quiero usar // ReSharper disable UnusedMember.Global comentarios.

También podría marcar cada método (o toda la clase) con [JetBrains.Annotations.UsedImplicitly]. Yo particularmente no quiero hacer eso tampoco.

+0

Curiosamente, en otra computadora, R # no advierte sobre los métodos 'no utilizados'. ¿Hay alguna configuración que podría haber cambiado? –

Respuesta

26

Debe usar Anotaciones JetBrains y marcar el atributo con MeansImplicitUseAttribute. Puede hacer referencia JetBrains.Annotations.dll directamente, o puede copiar el código fuente de las anotaciones (de ReSharper /Opciones /Código de inspección/Código Anotaciones) en su solución.

Si necesita anotar algún ensamblaje externo que no sea de su propiedad, debe crear un archivo de Anotación Externa (xml) en la siguiente carpeta: %ReSharperInstallDir%\Bin\ExternalAnnotations. Hay muchos ejemplos, solo puede copiar algunos.

El archivo de anotaciones externas también puede estar en la misma ruta que el archivo DLL si lo nombra DllNameWithoutExtension.ExternalAnnotations.xml.

+0

Cool. ¿Hay alguna manera de marcar un atributo que yo no poseo? –

+4

Sí, puedes. Necesita crear un archivo de Anotación Externa (xml) en la siguiente carpeta:% ReSharperInstallDir% \ Bin \ ExternalAnnotations. Hay muchos ejemplos, solo puede copiar algunos. –

+0

@IlyaRyzhenkov ¿hay alguna manera de implementar anotaciones externas con la biblioteca (no quiero alinear ni hacer referencia al ensamblado JetBrains.Annotations.dll) sin forzar al usuario a colocar estas anotaciones en la carpeta% ReSharperInstallDir% \ Bin \ ExternalAnnotations? – hazzik

9

Hay muchos ejemplos, pero quería ser un poco más explícito en caso de que no quiera rastrear un ejemplo. :)

Cree un archivo con el nombre del ensamblaje del atributo (.xml) en% ReSharperInstallDir% \ Bin \ ExternalAnnotations. Por ejemplo, hice Microsoft.VisualStudio.QualityTools.CodedUITestFramework.xml y puse este XML en su interior:

<assembly name="Microsoft.VisualStudio.QualityTools.CodedUITestFramework"> 
    <member name="T:Microsoft.VisualStudio.TestTools.UITesting.CodedUITestAttribute"> 
    <attribute ctor="M:JetBrains.Annotations.MeansImplicitUseAttribute.#ctor" /> 
    </member> 
</assembly> 

Reiniciar VS y usted está en su manera!

Cuestiones relacionadas