Hinzufügen von Resharper-Code-Annotation zu eigenem Code auf nicht-invasive Weise

7

Ich möchte eine meiner Methoden mit dem StringFormatMethod-Attribut kennzeichnen, sodass die Resharper-Syntax es hervorhebt.

Ich konnte dies tun, indem ich die Assembly JerBrains.Annotations referenziere und das Attribut hinzufüge.

Ich finde jedoch, dass dies ein sehr invasiver Weg ist, dies zu tun. Nicht jeder hier verwendet JetBrains, und es wird verlangt, dass die .dll-Datei an Subversion gebunden wird, indem die Abhängigkeit hinzugefügt wird und der Code mit etwas verworfen wird, das für eine bestimmte IDE spezifisch ist, was ich hasse.

Ich habe über die Funktion "externe Anmerkungen" gelesen, aber ich konnte das nicht tun. Ich bin mir nicht sicher, ob ich es falsch gemacht habe oder ob es für ein Projekt innerhalb der Lösung einfach nicht unterstützt wird (d. H. Keine kompilierte Assembly-Referenz).

Gibt es also eine Möglichkeit, einer Methode im Projekt auf nicht-invasive Weise eine Code-Annotation hinzuzufügen?

P.S das ist die Methode:

mit System;

%Vor%

Und das ist der Inhalt von

C: \ Programme (x86) \ JetBrains \ ReSharper \ v7.1 \ Bin \ ExterneAnnotationen \ MyLib.xml:

%Vor%     
Amir Abiri 28.03.2013, 10:30
quelle

3 Antworten

8

Sie müssen nicht auf die Assembly verweisen, um Annotationsattribute hinzuzufügen. Gemäß der Dokumentation können Sie zu ReSharper/Options/Code Annotations wechseln, die Attributimplementierungen in die Zwischenablage kopieren und Fügen Sie sie in Ihre eigene Quelle ein, wo ReSharper sie verwenden wird. Sie können sogar den Namensraum ändern, in dem sie sich befinden, wenn Sie JetBrains nicht in Ihrer Assembly haben möchten.

Ich weiß nicht, ob Sie mit externen XML-Annotationen für den Quellcode etwas Glück haben werden. Ich habe den Eindruck, dass sie nur für bestehende Binärdateien gedacht sind. Trotzdem denke ich, dass die Dekoration Ihrer Quelle mit Attributen als Quelle der Dokumentation für Sie und andere Entwickler sehr wertvoll ist.

    
shambulator 28.03.2013, 11:11
quelle
9

Nur um die Möglichkeiten zusammenzufassen:

  • Sie verweisen auf nugget Jetbrains.Annotations und definieren nicht JETBRAINS_ANNOTATIONS : Solche Anmerkungen sind nur für Entwickler nützlich, die mit Quellcode arbeiten, sie werden nicht in Ihrer Binärdatei kompiliert (Bedingungsanweisung wird verwendet) und sie sind nicht sichtbar, wenn Sie auf Ihre DLL verweisen. Sie können sogar developmentOnly="true" -Attribut zu Jetbrains.Annotations in packages.config hinzufügen, so dass es standardmäßig nicht als Abhängigkeit behandelt wird.

  • Sie verweisen wie oben, definieren aber JETBRAINS_ANNOTATIONS : Jetzt haben Sie echte binäre Abhängigkeit und Jetbrains.Annotations.dll muss entweder mit Ihrer Bibliothek verteilt werden oder muss als nugget-Abhängigkeit heruntergeladen werden.

  • Sie kopieren Annotationen mit internal checked (also werden sie vom Client-Code nicht verwendet) in "YourLib.Annotations": Sie werden dann in Ihre lib eingebettet und sind sogar für andere Entwickler verfügbar wenn sie nur eine binäre Version verwenden.

  • Sie stellen externe Anmerkungen zur Verfügung: für größere Bibliotheken / mehr Attribute, dies kann auch 40k verbrauchen, es ist eine separate Datei und im Allgemeinen ist es weniger trivial zu erstellen / konsumieren.

Ich persönlich ging mit der dritten Option (für gemeinsame Bibliotheken, Projekte verwenden in der Regel nur nugets)

    
kwesolowski 15.08.2015 11:24
quelle
5

Weiß nicht, ob es hilft, aber der Elementname <assembley> ist falsch geschrieben (es sei denn, sie verwenden das im Schema). Sollte <assembly> sein.

    
osoviejo 04.06.2014 09:28
quelle