Visual Studio, pro Einrückung der Lösungseinrückung


89

Ich arbeite an ein paar verschiedenen Dingen und einige verwenden Tabulatoren, einige verwenden 2 Leerzeichen für Einrückungen, andere Benutzer 4 Leerzeichen für Einrückungen usw.

Die Option zum Festlegen in Visual Studio finden Sie unter Extras-> Optionen-> Texteditor-> <Sprache> -> Registerkarten

Gibt es eine Möglichkeit, diese Einstellungen pro Lösung zu überschreiben?


14
Ich wünschte, es könnte den Tabulator- / Einrückungsstil pro Datei erkennen. Das heißt, wenn eine Datei geöffnet wird, wird für diese Datei ein Tabulator- / Einrückungsstil verwendet. Sublime Text macht es.
IsmailS

Antworten:


20

Hier ist ein (zugegebenermaßen hackiger) Weg, um das zu erreichen, wonach Sie suchen:

1) Erstellen Sie ein Makro, das den Einzug ( Quelle ) ändert.

 Sub Set-Indent(indent As integer)
     Dim props As EnvDTE.Properties = DTE.Properties("TextEditor", "C/C++")
     Dim ts As EnvDTE.Property = props.Item("TabSize")
     Dim ins As EnvDTE.Property = props.Item("IndentSize")
     ts.Value = indent 
     ins.Value = indent 
 End Sub

2) Verbinden Sie dies mit dem Laden Ihrer Lösung: Wählen EnvironmentEventsSie SolutionEventsim Makro-Explorer im ersten Dropdown-Menü und Openedim zweiten die Option aus. Sie haben jetzt ein Makro, das jedes Mal ausgelöst wird, wenn Sie eine Lösung öffnen. Sie müssen nur Ihre Lösungen dem erforderlichen Einzug zuordnen.


8
Hack, ja, aber es funktioniert. Vielen Dank. Für C # -Entwickler ist es DTE.Properties ("TextEditor", "CSharp")
Mike Stockdale

2
Wenn Sie dies in eine Lösung einfügen, müssen Sie es in alle Lösungen einfügen. Besonders für öffentliche Projekte kaum verwendbar. EditorConfig (nächste Antwort unten) ist meiner Meinung nach besser.
Rustyx

93

UPDATE: VS 2017 unterstützt EditorConfig nativ: https://blogs.msdn.microsoft.com/dotnet/2016/12/15/code-style-configuration-in-the-vs2017-rc-update/

In VS 2010 und höher gibt es eine Erweiterung, die den Einzug basierend auf der .editorconfig- Datei im Lösungs- / Projektstamm festlegt :

http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328

Es gibt auch eine ähnliche Erweiterung für Visual Studio Code .


2
Ich mag das - schnell einzurichten, es hat nicht das gleiche Problem der Verlangsamung wie einige der anderen Optionen und es hat den zusätzlichen Bonus, dass Sie die Einstellungen für einzelne Projekte in einer Lösung bei Bedarf ändern können zu.
Karaken12

@ondatra Ich kann es nicht zum Laufen bringen, wenn ich die Datei in meinen Lösungsordner (gleichzeitig mit der .slnDatei) lege , nur in jedem Projektordner. Unterstützt es auch indent_brace_style?
Drzaus

@ondatra gerade herausgefunden, es nicht unterstützt indent_brace_stylenoch - ich habe ein Problem , eröffnet dafür.
Drzaus

Danke. Bitte beachten Sie, dass ich das 0.4.0-Update von github.com/editorconfig/editorconfig/issues/116 für vs2012update3
SteelBytes

1
VS2017 v15.3 unterstützt jetzt viele Eigenschaften des Codierungsstils .
Frédéric


4

Von der Website der VS-Erweiterung EditorConfig ( http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328 ):

Das EditorConfig-Projekt definiert ein einfaches Dateiformat zum Konfigurieren gängiger Texteditoroptionen wie Einrückungsgrößen . Diese Konfigurationsdateien befinden sich neben dem Quellcode eines Projekts, sodass Texteditoren die richtigen Optionen Datei für Datei verwenden können. Das EditorConfig-Projekt bietet Plugins für viele gängige Texteditoren, sodass das Format vollständig plattformübergreifend ist.

(Hervorhebung von mir)

Vollständige Offenlegung: Ich konnte es nicht persönlich testen (da ReSharper übernimmt).


2

VS2017 RC hat Unterstützung für das .editorconfig-Format hinzugefügt.


5
Ja, aber ein Beispiel für die fertige Datei wäre schön :)
Toddmo


0

UPDATE: Der Einzug wird anscheinend nicht von Resharper verwaltet, daher wird in dieser Antwort die spezifische Frage nicht behandelt. Es gilt jedoch allgemein; dh "Visual Studio, pro Lösungseinstellungen" für den Fall, dass hier jemand darauf stößt.


Wenn Sie Resharper verwenden , können Sie Formatierungseinstellungen (wirklich alle Einstellungen) nur für die Lösung speichern. Sie können außerdem angeben, ob nur für Sie (dh nicht für die Quellcodeverwaltung festgelegt) oder für gemeinsame lösungsspezifische Einstellungen (dh für die Quellcodeverwaltung festgelegt).

Resharper > Options > Code Editing > C# (or whatever language) > Formatting Style > Braces Layout

Save ToWählen Sie dann unten im Fenster unter "Lösung XYZ persönlich" (oder "geteilt", je nach Zweck).

Dadurch wird eine XML-Datei YOURSOLUTION.sln.DotSettings.usermit folgenden Werten erstellt:

<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue">NEXT_LINE</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/CASE_BLOCK_BRACES/@EntryValue">NEXT_LINE</s:String>

Resharper-Einstellungen - Nur zur Lösung speichern


1
Mit welcher Resharper-Einstellung wird der Einzug auf 2 oder 4 Leerzeichen gesetzt?
Endy Tjahjono

@EndyTjahjono, das ist eine VS-Einstellung: Extras> Optionen> Texteditor> (Sprache)> Registerkarten> "Registerkartengröße" oder "Einzugsgröße". Und das Schöne an VS2012 ist, dass Sie die Schnellstart-Suche ( CTRL+Q) verwenden und "Tabs" eingeben können, um direkt zu allen verfügbaren Spracheinstellungen zu springen.
Drzaus

Diese VS-Einstellung ist jedoch global (nicht pro Lösung / Projekt) und Sie haben vorgeschlagen, Resharper zu verwenden, da sie Einstellungen pro Lösung / Projekt enthält.
Endy Tjahjono

Du hast mich - ich war gerade dabei, einige andere Einstellungen in Resharper zu ändern, also nahm ich an, dass es auch das Einrücken verwalten würde. Ich habe den Resharper nur noch einmal nach Registerkarteneinstellungen durchsucht, konnte ihn aber nicht finden. Die Einschränkung gilt also "für so ziemlich jede Einstellung außer denjenigen, die der Resharper nicht verwaltet, wie die Größe der Einrückungen". Ich werde die Antwort aktualisieren und mich frei fühlen, da ich nicht genug Aufmerksamkeit geschenkt habe.
Drzaus

Danke für das Update. Zu Ihrer Information, ich habe nicht versucht, Sie zu korrigieren, aber ich hatte gehofft, dass Resharper pro Projekt eingerückt ist und ich habe einfach nicht den Ort gefunden, an dem ich es einstellen kann.
Endy Tjahjono

0

Die akzeptierte Lösung lautet also "Sie müssen Ihre Lösungen nur dem erforderlichen Einzug zuordnen". Das ist großartig, außer wie machen Sie das? Nachdem ich viel Zeit damit verschwendet hatte, das herauszufinden, fand ich eine Methode, die ich bevorzuge hier . Diese Methode lädt eine beliebige Anzahl exportierter Einstellungen, die für jede Lösung unterschiedlich sein können. Die Einstellungen können alles umfassen, von Einrückungen über Farben bis hin zum Fensterlayout (glaube ich).

  • Öffnen Sie in Visual Studio 2008 Extras> Makros> Makro-Explorer
  • Doppelklicken Sie auf MyMacros> Modul1 (wenn Sie kein Modul1 haben, klicken Sie mit der rechten Maustaste auf MyMacros und wählen Sie 'Neues Modul ...', um es zu erstellen).
  • Doppelklicken Sie im Makro-Explorer-Fenster links auf "EnvironmentEvents".
  • Wählen Sie in der Dropdown-Liste oben links "SolutionEvents".
  • Wählen Sie in der Dropdown-Liste oben rechts "Geöffnet".
  • Code zur Behandlung des SolutionEvents.Opened-Ereignisses wird automatisch hinzugefügt. Ändern Sie diesen Code wie folgt:

    Private Sub SolutionEvents_Opened() Handles SolutionEvents.Opened
        Dim item As ProjectItem = DTE.Solution.FindProjectItem("solution.vssettings")
        If Not item Is Nothing Then
            'MsgBox("Uncomment this to see a message when settings are loaded")
            Dim name = item.FileNames(1)
            DTE.ExecuteCommand("Tools.ImportandExportSettings", "/import:""" & name & """")
        End If
    End Sub
    
  • Speichern Sie das Makro.

  • Verwenden Sie Extras> Optionen, um Ihre Benutzeroberfläche so zu ändern, dass die Registerkarteneinstellungen und alle anderen gewünschten Einstellungen vorgenommen werden.
  • Extras> Einstellungen importieren und exportieren ...> Ausgewählte Umgebungseinstellungen exportieren> Weiter
  • Um nur Registerkarteneinstellungen zu exportieren, deaktivieren Sie "Alle Einstellungen" und aktivieren Sie "Optionen"> "Texteditor"> "C / C ++"
  • Klicken Sie auf Weiter und geben Sie "solution.vssettings" als "Wie möchten Sie Ihre Einstellungsdatei benennen?" Ein. und speichern Sie die Datei an einem Ort, an dem Sie eine Lösung haben, für die Sie diese Einstellungen verwenden möchten.
  • Ziehen Sie solution.vssettings an eine beliebige Stelle im Projektmappen-Explorer.
  • Beenden Sie Visual Studio und wenn Sie das nächste Mal eine Lösung mit solution.vssettings öffnen, sollten diese Einstellungen geladen werden.

Wenn das Makro nicht ausgeführt wird, liegt dies möglicherweise an einem MS-Sicherheitspatch. Fügen Sie auf dieser Grundlage die folgende Zeichenfolge hinzu:

<AllowDComReflection enabled="true"/>

Unterhalb des <runtime> -Tags in den folgenden drei Dateien:

"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsmsvr.exe.config"
"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsaenv.exe.config"
"C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe.config"

Starten Sie unbedingt den Editor, mit dem Sie diese Dateien mit Administratorrechten bearbeiten (dh klicken Sie mit der rechten Maustaste auf Editor und wählen Sie "Als Administrator ausführen").

Ich habe auch ein Plug-In gefunden , das das gleiche wie das oben vorgeschlagene Makro tun soll, aber aus irgendeinem Grund hat es nichts getan, nachdem ich das Installationsprogramm ausgeführt habe.


0

Das Clang-Format bietet sehr ausgefeilte Optionen zum Formatieren Ihres Quellcodes.

Das Visual Studio-Plugin ist recht rudimentär, dh es wird nicht automatisch ausgeführt, aber es macht seine Arbeit gut (wenn es manuell aufgerufen wird).

http://llvm.org/builds/

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.