Visual Studio, çözüm girinti ayarları başına


89

Birkaç farklı şey üzerinde çalışıyorum ve bazıları sekmeler kullanıyor, bazıları girintiler için 2 boşluk, diğer kullanıcılar girintiler için 4 boşluk vb.

Bunu Visual Studio'da ayarlama seçeneği Araçlar-> Seçenekler-> Metin Düzenleyicisi-> <dil> -> Sekmelerdedir.

Çözüm bazında bu ayarları geçersiz kılmanın bir yolu var mı?


15
Dosya bazında sekme / girinti stilini algılayabilmesini isterdim. yani bir dosya açıldığında, o dosya için sekme / girinti stilini kullanacaktır. Sublime Text yapar.
İsmailS

Yanıtlar:


20

İşte aradığınızı elde etmenin bir (kuşkusuz hileli) yolu:

1) girintiyi değiştiren bir makro oluşturun ( kaynak )

 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) Bunu çözüm yüklemenize bağlayın: Makro gezgininde, ikincide ilk açılır menüden seçin EnvironmentEvents, seçin . Artık bir çözümü her açtığınızda tetikleyecek bir makronuz var. Çözümlerinizi gerekli girintiye eşlemeniz yeterlidir.SolutionEventsOpened


8
Hack, evet, ama işe yarıyor. Teşekkürler. C # devs için bu DTE.Properties ("TextEditor", "CSharp")
Mike Stockdale

2
Bunu tek bir çözüme koyarsanız, tüm çözümlere koymanız gerekir. Özellikle kamu projeleri için neredeyse hiç kullanılamaz. EditorConfig (aşağıdaki sonraki cevap) daha iyidir IMHO.
rustyx

93

GÜNCELLEME: VS 2017, EditorConfig'i yerel olarak destekler: https://blogs.msdn.microsoft.com/dotnet/2016/12/15/code-style-configuration-in-the-vs2017-rc-update/

VS 2010 ve üzeri sürümlerde , girintiyi çözüm / proje kökünde .editorconfig dosyasına göre ayarlayan bir uzantı vardır :

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

Visual Studio Code için de benzer bir uzantı var .


2
Bunu beğendim - hızlı kurulum, diğer seçeneklerden bazılarıyla aynı yavaşlama sorununa sahip değil ve ihtiyacınız olursa bir çözümdeki bireysel projelerdeki ayarları değiştirebileceğiniz ek bir bonusu var için.
karaken12

@ondatra Dosyayı Çözüm klasörüme ( .slndosya ile eşzamanlı olarak ), yalnızca her proje klasörüne koyduğumda çalışmasını sağlayamıyorum . Ayrıca destekliyor indent_brace_stylemu?
drzaus


teşekkür ederim. lütfen unutmayın, vs2012update3 için github.com/editorconfig/editorconfig/issues/116 adresindeki 0.4.0 güncellemesini kullanmak zorunda kaldım
SteelBytes

1
VS2017 v15.3 artık birçok kodlama stili özelliğini destekliyor .
Frédéric


4

VS uzantısı EditorConfig ( http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328 ) web sitesinden:

EditorConfig projesi, girinti boyutları gibi yaygın metin düzenleyici seçeneklerini yapılandırmak için basit bir dosya biçimi tanımlar . Bu konfigürasyon dosyaları, bir projenin kaynak kodunun yanında yer alacak şekilde tasarlanmıştır ve metin editörlerinin dosya bazında doğru seçenekleri kullanmasına izin verir. EditorConfig projesi, birçok yaygın metin düzenleyicisi için eklentiler sağlayarak formatı tamamen platformlar arası hale getirir.

(vurgu benim)

Tam Açıklama: Kişisel olarak test edemedim (çünkü ReSharper devraldı).


2

VS2017 RC, .editorconfig formatı için destek ekledi.


5
evet ama bitmiş dosyanın bir örneği güzel olurdu :)
Toddmo


0

GÜNCELLEME: Görünüşe göre girinti Resharper tarafından yönetilmiyor, bu nedenle bu yanıt aslında belirli soruyu ele almıyor. Ancak genel anlamda geçerlidir; Yani burada birisi bunu ararken tökezlediğinde "Visual Studio, çözüm başına ayarlar" .


Resharper kullanıyorsanız , yalnızca çözüm için biçimlendirme ayarlarını (gerçekten, herhangi bir ayarı) kaydedebilirsiniz. Ayrıca, yalnızca sizin için mi (yani kaynak kontrolüne bağlı değil) yoksa çözüme özgü paylaşılan ayarlar mı (yani, kaynak kontrolüne taahhüt) belirleyebilirsiniz.

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

Ardından pencerenin altında, Save To"Çözüm XYZ kişisel" (veya amacınıza bağlı olarak paylaşılan) seçeneğini seçin.

Bu, aşağıdaki YOURSOLUTION.sln.DotSettings.usergibi değerlere sahip bir xml dosyası oluşturur :

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

Yeniden Paylaşım Ayarları - Yalnızca Çözüm İçin Kaydet


1
Girintiyi 2 boşluk veya 4 boşluk olarak ayarlamak için hangi yeniden paylaşım ayarı kullanılır?
Endy Tjahjono

@EndyTjahjono bu bir VS ayarıdır: Araçlar> Seçenekler> Metin Düzenleyici> (Dil)> Sekmeler> "Sekme Boyutu" veya "Girinti Boyutu". Ve VS2012 ile ilgili güzel olan şey, hızlı başlatma aramasını ( CTRL+Q) kullanabilir ve mevcut tüm dil ayarlarına doğrudan atlamak için "Sekmeler" yazabilirsiniz.
drzaus

Ancak bu VS ayarı geneldir (çözüm / proje başına değil) ve çözüm / proje başına ayarlara sahip olduğu için yeniden paylaşmayı kullanmayı önerdiniz?
Endy Tjahjono

Beni anladınız - yeniden paylaşımda diğer bazı ayarları değiştirmenin ortasındaydım, bu yüzden girintiyi de yöneteceğini varsaydım. Sekme ayarları için yeniden paylaşmaya baktım, ancak bulamadım. Dolayısıyla, uyarı "girinti boyutu gibi yeniden paylaşıcının yönetmediği ayarlar dışında hemen hemen her ayar için" dir. Cevabı güncelleyeceğim, yeterince dikkat etmediğim için olumsuz oy vermekten çekinmeyin.
drzaus

Güncelleme için teşekkürler. Bilginize Sizi düzeltmeye çalışmıyordum, ama aslında yeniden paylaşanın proje başına girinti ayarına sahip olmasını umuyordum ve bunu ayarlayacak bir yer bulamadım.
Endy Tjahjono

0

Dolayısıyla, kabul edilen çözüm "Çözümlerinizi gereken girintiye eşlemeniz gerekir" diyor, bu harika, bunu nasıl yapacağınız dışında? Bunu anlamaya çalışırken çok zaman harcadıktan sonra, burada tercih ettiğim bir yöntem buldum . Bu yöntem, her çözüm için farklı olabilecek herhangi bir sayıda dışa aktarılan ayarı yükler. Ayarlar, girintilerden renklere ve hatta pencere düzenine kadar her şeyi içerebilir (sanırım).

  • Visual Studio 2008'de Araçlar> Makrolar> Makro gezgini açın
  • MyMacros> Module1 öğesine çift tıklayın (Module1'e sahip değilseniz, MyMacros'a sağ tıklayın ve oluşturmak için 'Yeni modül ...' seçeneğini seçin).
  • Makro gezgini penceresinde, soldaki 'OrtamEtkinlikleri'ni çift tıklayın.
  • Sol üstteki açılır menüden "SolutionEvents" i seçin.
  • Sağ üstteki açılır menüden "Açıldı" yı seçin.
  • SolutionEvents.Opened olayını işleyecek kod otomatik olarak eklenir. Bu kodu şu şekilde değiştirin:

    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
    
  • Makroyu kaydedin.

  • Arayüzünüzü sekme ayarlarına ve ayarlamak istediğiniz diğer ayarlara sahip olacak şekilde değiştirmek için Araçlar> Seçenekler'i kullanın.
  • Araçlar> Ayarları İçe ve Dışa Aktar ...> Seçili ortam ayarlarını dışa aktar> İleri
  • Yalnızca sekme ayarlarını dışa aktarmak için, 'Tüm Ayarlar'ın işaretini kaldırın ve ardından Seçenekler> Metin Düzenleyici> C / C ++ öğesini işaretleyin.
  • İleri'yi tıklayın ve ardından 'solution.vssettings' yazın ve 'Ayarlar dosyanıza ne isim vermek istiyorsunuz?' ve dosyayı, bu ayarları kullanmak istediğiniz bir çözüme sahip olduğunuz yere kaydedin.
  • Solution.vssettings öğesini Solution Explorer penceresindeki herhangi bir konuma sürükleyin.
  • Visual Studio'dan çıkın ve bir sonraki sefer solution.vssettings içeren bir çözümü açtığınızda, bu ayarları yüklemesi gerekir.

Makro çalışmazsa, bunun nedeni bir MS güvenlik yaması olabilir. Dayanarak bu , aşağıdaki dizeyi ekleyin:

<AllowDComReflection enabled="true"/>

Aşağıdaki üç dosyada <runtime> etiketinin altında:

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

Bu dosyaları Yönetici ayrıcalıklarıyla düzenlemek için kullandığınız düzenleyiciyi başlattığınızdan emin olun (yani, Not Defteri'ne sağ tıklayın ve 'Yönetici Olarak Çalıştır'ı seçin).

Ayrıca yukarıda önerilen makro ile aynı şeyi yapması gereken bir eklenti buldum , ancak bir nedenle yükleyicisini çalıştırdıktan sonra hiçbir şey yapmadı.


0

clang-format, kaynak kodunuzu biçimlendirmek için oldukça gelişmiş seçenekler sunar.

Visual Studio eklentisi oldukça ilkeldir, yani otomatik olarak çalışmaz, ancak işini iyi yapar (yani manuel olarak çağrıldığında).

http://llvm.org/builds/

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.