Visual Studio, per impostazioni di rientro della soluzione


89

Sto lavorando su un paio di cose diverse e alcuni usano le schede, alcuni usano 2 spazi per i rientri, altri utenti 4 spazi per i rientri ecc.

L'opzione per impostarlo in Visual Studio è in Strumenti-> Opzioni-> Editor di testo-> <lingua> -> Schede

C'è un modo per sovrascrivere queste impostazioni in base alla soluzione?


15
Vorrei che potesse rilevare lo stile di tabulazione / rientro per file. cioè quando un file viene aperto, utilizzerà lo stile di tabulazione / rientro per quel file. Sublime Text lo fa.
IsmailS

Risposte:


20

Ecco un modo (certamente hacky) per ottenere ciò che stai cercando:

1) crea una macro che cambia il rientro ( sorgente )

 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) Collegalo al caricamento della tua soluzione: Nell'esploratore macro, scegli EnvironmentEvents, seleziona SolutionEventsnel primo menu a discesa, Openednel secondo. Ora hai una macro che si attiverà ogni volta che apri una soluzione. Hai solo bisogno di mappare le tue soluzioni al rientro richiesto.


8
Hack, sì, ma funziona. Grazie. Per gli sviluppatori C #, è DTE.Properties ("TextEditor", "CSharp")
Mike Stockdale

2
Se lo metti in una soluzione, dovrai inserirlo in tutte le soluzioni. Difficilmente utilizzabile, soprattutto per progetti pubblici. EditorConfig (la prossima risposta sotto) è migliore IMHO.
rustyx

93

AGGIORNAMENTO: VS 2017 supporta EditorConfig in modo nativo: https://blogs.msdn.microsoft.com/dotnet/2016/12/15/code-style-configuration-in-the-vs2017-rc-update/

In VS 2010 e versioni successive, è presente un'estensione che imposta il rientro in base al file .editorconfig nella radice della soluzione / progetto:

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

C'è anche un'estensione simile per Visual Studio Code .


2
Mi piace: veloce da configurare, non ha lo stesso problema di rallentamento di alcune delle altre opzioni e ha il vantaggio aggiuntivo che puoi modificare le impostazioni sui singoli progetti in una soluzione, se necessario per.
karaken12

@ondatra Non riesco a farlo funzionare quando metto il file nella mia cartella Solution (in concomitanza con il .slnfile), solo in ogni cartella del progetto. Inoltre, supporta indent_brace_style?
drzaus

@ondatra ha appena scoperto che non supporta indent_brace_styleancora - ho aperto un problema per questo.
drzaus

grazie. si prega di notare che ho dovuto utilizzare l'aggiornamento 0.4.0 da github.com/editorconfig/editorconfig/issues/116 per vs2012update3
SteelBytes

1
VS2017 v15.3 ora supporta molte proprietà di stile di codifica .
Frédéric


4

Dal sito Web EditorConfig dell'estensione VS ( http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328 ):

Il progetto EditorConfig definisce un semplice formato di file per configurare le opzioni comuni dell'editor di testo come le dimensioni dei rientri . Questi file di configurazione sono progettati per essere inseriti insieme al codice sorgente di un progetto, consentendo agli editor di testo di utilizzare le giuste opzioni file per file. Il progetto EditorConfig fornisce plugin per molti editor di testo comuni, rendendo il formato completamente multipiattaforma.

(enfasi mia)

Divulgazione completa: non ho potuto testarlo personalmente (perché ReSharper prende il sopravvento).


2

VS2017 RC ha aggiunto il supporto per il formato .editorconfig.


5
si ma un esempio del file finito sarebbe carino :)
toddmo


0

AGGIORNAMENTO: sembra che il rientro non sia gestito da Resharper, quindi questa risposta non affronta effettivamente la domanda specifica. Tuttavia, si applica in termini generali; cioè "Visual Studio, per le impostazioni della soluzione" nel caso qualcuno inciampi qui cercando quello.


Se stai usando Resharper , puoi salvare le impostazioni di formattazione (in realtà, qualsiasi impostazione) solo per la soluzione. È inoltre possibile specificare se solo per te (cioè non impegnato nel controllo del codice sorgente) o impostazioni specifiche della soluzione condivisa (cioè impegnarsi nel controllo della fonte).

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

Quindi nella parte inferiore della finestra, sotto Save Toscegli "Soluzione XYZ personale" (o condivisa, a seconda del tuo scopo).

Questo crea un file xml YOURSOLUTION.sln.DotSettings.usercon valori come:

<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>

Impostazioni di affilatura - Salva solo per soluzione


1
Quale impostazione di riscrittura viene utilizzata per impostare il rientro su 2 o 4 spazi?
Endy Tjahjono

@EndyTjahjono che è un'impostazione VS: Strumenti> Opzioni> Editor di testo> (Lingua)> Schede> "Dimensione scheda" o "Dimensione rientro". E la cosa bella di VS2012 è che puoi usare la ricerca di avvio rapido ( CTRL+Q) e digitare "Tab" per passare direttamente a tutte le impostazioni della lingua disponibili.
drzaus

Ma l'impostazione VS è globale (non per soluzione / progetto) e hai suggerito di utilizzare resharper perché ha impostazioni per soluzione / progetto?
Endy Tjahjono

Mi hai capito: stavo cambiando alcune altre impostazioni in Resharper, quindi ho pensato che avrebbe gestito anche il rientro. Ho appena cercato di nuovo in resharper per le impostazioni delle schede, ma non sono riuscito a trovarlo. Quindi l'avvertenza è "per quasi tutte le impostazioni tranne quelle che resharper non gestisce, come la dimensione del rientro". Aggiornerò la risposta, sentiti libero di votare in negativo poiché non ho prestato abbastanza attenzione.
drzaus

Grazie per l'aggiornamento. Cordiali saluti, non stavo cercando di correggerti, ma in realtà speravo che resharper avesse l'impostazione del rientro per progetto e non ho trovato il posto per impostarlo.
Endy Tjahjono,

0

Quindi, la soluzione accettata dice "Hai solo bisogno di mappare le tue soluzioni al rientro richiesto", il che è ottimo, tranne come lo fai? Dopo aver perso molto tempo a cercare di capirlo, ho trovato un metodo che preferisco qui . Questo metodo carica un numero qualsiasi di impostazioni esportate che possono essere diverse per ogni soluzione. Le impostazioni possono includere qualsiasi cosa, dai rientri ai colori o persino al layout della finestra (credo).

  • In Visual Studio 2008, apri Strumenti> Macro> Esplora macro
  • Fare doppio clic su MyMacros> Module1 (se non si dispone di Module1, fare clic con il pulsante destro del mouse su MyMacros e scegliere "New module ..." per crearlo).
  • Nella finestra di esplorazione macro, fare doppio clic su "EnvironmentEvents" a sinistra.
  • Nel menu a discesa in alto a sinistra, scegli "SolutionEvents".
  • Nel menu a discesa in alto a destra, scegli "Aperto".
  • Il codice per gestire l'evento SolutionEvents.Opened viene aggiunto automaticamente. Cambia quel codice come segue:

    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
    
  • Salva la macro.

  • Usa Strumenti> Opzioni per modificare la tua interfaccia utente per avere le impostazioni della scheda e qualsiasi altra cosa desideri impostare.
  • Strumenti> Importa ed esporta impostazioni ...> Esporta impostazioni ambiente selezionate> Avanti
  • Per esportare solo le impostazioni della scheda, deseleziona "Tutte le impostazioni" quindi seleziona Opzioni> Editor di testo> C / C ++
  • Fare clic su Avanti, quindi digitare "solution.vssettings" come "Quale nome vuoi assegnare al file delle impostazioni?" e salva il file ovunque tu abbia una soluzione in cui desideri utilizzare quelle impostazioni.
  • Trascina solution.vssettings in qualsiasi posizione nella finestra Esplora soluzioni.
  • Esci da Visual Studio e la prossima volta che apri una soluzione contenente solution.vssettings, dovrebbe caricare quelle impostazioni.

Se la macro non viene eseguita, potrebbe essere a causa di una patch di sicurezza MS. In base a ciò , aggiungi la seguente stringa:

<AllowDComReflection enabled="true"/>

Sotto il tag <runtime> nei seguenti tre file:

"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"

Assicurati di avviare l'editor che utilizzi per modificare quei file con i privilegi di amministratore (ad esempio, fai clic con il pulsante destro del mouse su Blocco note e scegli "Esegui come amministratore").

Ho anche trovato un plug-in che dovrebbe fare la stessa cosa della macro suggerita sopra, ma per qualche motivo non ha fatto nulla dopo aver eseguito il suo programma di installazione.


0

clang-format fornisce opzioni abbastanza sofisticate per la formattazione del codice sorgente.

Il plug-in di Visual Studio è abbastanza rudimentale, cioè non viene eseguito automaticamente, ma svolge bene il suo lavoro (se invocato manualmente, cioè).

http://llvm.org/builds/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.