2014-12-12 4 views
6

Wir möchten .DotSettings zwischen mehreren Lösungen teilen. Das Ziel ist einCodeStyle.DotSettings, dass wir als eine Schicht in allen unseren X.sln.Dotsettings beziehen. Wenn ich die Ebene hinzufüge, sehe ich jedoch unerwartetes Verhalten.Wie verwenden Sie relative Pfade in ReSharper DotSettings Schichten

Ich gehe zu "Optionen verwalten", klicken Sie mit der rechten Maustaste auf "Solution X team-shared" -> "Layer hinzufügen" -> "Einstellungsdatei öffnen", wählen Sie CodeStyle.DotSettings und klicken Sie auf "Öffnen".

ich dann X.sln.DotSettings inspizieren und zwei Referenzen sehen, die man einen absoluten Pfad verwendet wird, und ein mit einem relativ:

<s:String x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=3BE2D8150433584697322AAD3C173856/AbsolutePath/@EntryValue">C:\path\to\my\repo\CodeStyle.DotSettings</s:String> <s:String x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=3BE2D8150433584697322AAD3C173856/RelativePath/@EntryValue">..\CodeStyle.DotSettings</s:String>

in einem absoluten Pfad Überprüfung auf meinem lokalen Repository keinen Sinn macht, so dass ich versuchen Sie, diese Zeile aus X.DotSettings zu entfernen, aber sie wird dann nicht mehr im Dialog "Einstellungen Ebenen" angezeigt. Der relative Pfad erscheint mit seinen führenden Punkten verdächtig, also versuche ich, ..\ daraus zu entfernen, aber es erscheint immer noch nicht in "Einstellungen Ebenen".

Was mache ich falsch?

Wir ReSharper verwenden 8.2.3

Antwort

9

Siehe die entsprechende Ausgabe in JetBrains' Tracker: RSRP-339002.

Nichts entfernen: ReSharper versucht, die Datei von beiden Pfaden zu laden, also sollten Sie in Ordnung sein. Ich habe ein ähnliches Setup (eine gemeinsame und versionierte DotSettings zwischen mehreren Lösungen) für die letzten zwei Jahre ohne Probleme verwendet.

Sie können den absoluten Pfad nicht entfernen: Er wird als Schlüssel verwendet. Sie können immer noch für das Problem abstimmen. Ich persönlich mag es nicht, in einer quellkontrollierten Datei einen absoluten Pfad zu haben, auch wenn es in diesem Fall nicht schadet.

In Bezug auf die zusätzliche führende ..\, beobachte ich das gleiche Verhalten. Ich habe keine Ahnung warum; Vielleicht ist der Pfad relativ zum Cache-Ordner und nicht zum Lösungsordner? Wie auch immer, es ist definitiv notwendig.

+0

Einverstanden, das ist verwirrend. Ich habe das Thema jetzt kommentiert und abgestimmt. – knatten

6

R # behält sowohl den absoluten als auch den relativen Pfad bei, um alle Szenarien für die Verwendung der injizierten Dateilayer zu berücksichtigen. Der relative Pfad funktioniert für von der Quellcodeverwaltung gehostete Lösungen, bei denen die injizierte Layer-Datei ebenfalls in das gleiche Quellcode-Steuerelement eingecheckt ist. Der absolute Pfad funktioniert für das Injizieren einer Datei von einer externen Ressource, z. B. einen globalen Pfad auf der Maschine, oder eine Netzwerkfreigabe im Falle einer quellengesteuerten Lösung.

Absolute Pfad ist derzeit obligatorisch. Meistens aus historischen Gründen. Dies kann wahrscheinlich geändert werden, um "einen" zu erfordern.

Der relative Pfad ist relativ zur Datenträgerdatei der Hostschicht, in die er injiziert wird. In Ihrem Fall ist es die .sln.DotSettings Datei. Warum sollte es stattdessen sein Ordner sein, aber ich habe die .Parent Sache bei der Implementierung verpasst! Und es war während des Tests oder des Beta-Programms nicht aufgetaucht. So, es funktionierte für relative Pfade, und niemand kümmerte sich um die Verdoppelung bis jetzt% -)

+0

UPD ABS-Pfad wird nicht mehr benötigt, die nächste Version (wave02) unterstützt nur injizierte Layer mit Pfadangabe. – hypersw