2013-03-18 8 views
15

Uso ReSharper nei miei progetti C# e in genere mi piace. Tuttavia, continua ad aggiungere annotazioni al codice quando eseguo determinate azioni di refactoring.Interrompi reSharper dall'aggiunta di annotazioni

Per esempio, si aggiunge [NotNull] quando uso il "Controllare il parametro per nulla" Azione contesto:

// Before context action 
public void Foo(object input) 
{ 
} 

// After context action 
public void Foo([NotNull] object input) 
{ 
    if (input == null) 
    { 
     throw new ArgumentNullException("input"); 
    } 
} 

Inoltre, ReSharper poi aggiunge using JetBrains.Annotations al file, anche se non mi fa riferimento l'assemblea JetBrains dove l'attributo è definito.

Vorrei continuare a utilizzare le azioni di contesto, in quanto sono molto utili, ma non posso introdurre annotazioni esterne nel codice. ReSharper fornisce un'opzione per cambiare lo spazio dei nomi di annotazione predefinito e per copiare il codice sorgente dell'attributo di annotazione nel progetto, ma anche questa non è un'opzione per questo progetto.

C'è un modo per dire a ReSharper di interrompere l'aggiunta di annotazioni interamente? Ho provato nelle opzioni deselezionando JetBrains.Annotations come spazio dei nomi con gli attributi di annotazione del codice, ma ciò non sembra avere alcun effetto sul fatto che le annotazioni siano generate in primo luogo.

Aggiornamento: Mentre non è stato effettivamente riferimento a JetBrains.Annotations.dll, ero riferimento a un'altra DLL che ri-implementato gli stessi attributi di annotazione nella stessa JetBrains.Annotations spazio dei nomi. La rimozione di tale riferimento DLL impedirà a ReSharper di aggiungere le annotazioni. Sarebbe bello se esistesse ancora un'opzione per disattivarlo, ma la soluzione alternativa si adatta a questa situazione.

+1

NLog era la DLL che mi causava problemi. Non riesco a rimuoverlo, quindi ho fatto ricorso ad aggiungere le annotazioni al nostro spazio dei nomi di root perché vivere senza ReSharper non significa affatto vivere. –

+0

Consiglio vivamente l'uso di annotazioni. –

risposta

6

Quando si fa riferimento al JetBrains.Annotations.dll, l'azione predefinita per "Controllare il parametro per nulla" sembra essere quello di utilizzare l'attributo NotNull (nonostante l'aggiunta di un "annotare con 'NotNullAttribute'" opzione.

Il unica soluzione che so è quello di non riferimento JetBrains.Annotations.dll

Aggiornamento:.

guardando più in questo, sembra che ci fosse un suggerimento/bug che [NotNull] essere aggiunti quando l'annotazioni dll è incluso e "check parametro per la null "è richiesto: http://youtrack.jetbrains.com/issue/RSRP-70350 In caso che qualcun altro avvenga attraverso questo e si chiede perché ...

+1

grazie! Non mi riferivo a JetBrains.Annotations.dll, ma mi riferivo a un'altra DLL che aveva ridefinito tutti gli stessi attributi nello stesso spazio dei nomi. Rimozione che causa ReSharper per interrompere l'aggiunta dell'attributo. –