Çözüm Gezgini’nde dosya iç içe yerleştirme

Çözüm Gezgini, ilgili dosyaları düzenlemeye yardımcı olmak ve bulmalarını kolaylaştırmak için iç içe kullanır. Örneğin, bir projeye Bir Windows Forms formu eklerseniz, formun kod dosyası Çözüm Gezgini içinde formun altına iç içe yerleştirilmiştir. .NET Core (ve .NET 5 ve üzeri) projelerinde, dosya iç içe yerleştirme bir adım ileriye gidebilir. Dosya iç içe yerleştirme ön ayarları Arasında Seçim Yapabilirsiniz Kapalı, Varsayılan ve Web. Ayrıca dosyaların iç içe nasıl yerleştirileceğine özelleştirebilir veya çözüme özgü ve projeye özgü ayarlar oluşturabilirsiniz.

Not

Visual Studio 2022 sürüm 17.2 ve önceki sürümlerinde bu özellik yalnızca ASP.NET Core projeleri için destekleniyordu. Sürüm 17.3 ve sonraki sürümlerde .NET destek dosyası iç içe yerleştirmeyi hedefleyen projeler.

Dosya iç içe yerleştirme seçenekleri

Dosya iç içe yerleştirmeyi açma/kapatma düğmesi

Özelleştirilmemiş dosya iç içe yerleştirme için kullanılabilir seçenekler şunlardır:

  • Kapalı: Bu seçenek, herhangi bir iç içe yerleştirme olmadan size düz bir dosya listesi sağlar.

  • Varsayılan: Bu seçenek, Çözüm Gezgini'da varsayılan dosya iç içe yerleştirme davranışını sağlar. Belirli bir proje türü için hiçbir ayar yoksa, projedeki hiçbir dosya iç içe yerleştirilmemiş demektir. Örneğin bir web projesi için ayarlar varsa iç içe yerleştirme uygulanır.

  • Web: Bu seçenek Geçerli çözümdeki tüm projelere Web dosyası iç içe yerleştirme davranışını uygular. Çok sayıda kuralı vardır ve bunu kontrol edip bize ne düşündüğünüzü söylemenizi öneririz. Aşağıdaki ekran görüntüsünde, bu seçenekle elde ettiğiniz dosya iç içe geçirme davranışına yalnızca birkaç örnek vurgulanır:

    Çözüm Gezgini’nde dosya iç içe yerleştirme

Dosya iç içe yerleştirmeyi özelleştirme

İlk çıkardığınız şeyleri beğenmezseniz, Çözüm Gezgini dosyaları nasıl iç içe yerleştirebileceğinizi belirten kendi özel dosya iç içe yerleştirme ayarlarınızı oluşturabilirsiniz. İstediğiniz kadar özel dosya iç içe yerleştirme ayarı ekleyebilir ve bunlar arasında istediğiniz gibi geçiş yapabilirsiniz. Yeni bir özel ayar oluşturmak için boş bir dosyayla başlayabilir veya başlangıç noktanız olarak Web ayarlarını kullanabilirsiniz:

Özel dosya iç içe yerleştirme kuralları ekleme

Zaten çalışan bir şeyle çalışmak daha kolay olduğundan, başlangıç noktanız olarak Web ayarlarını kullanmanızı öneririz. Başlangıç noktanız olarak Web ayarlarını kullanırsanız, .filenesting.json dosyası aşağıdaki dosyaya benzer:

Özel ayarlar için temel olarak mevcut dosya iç içe yerleştirme kurallarını kullanma

DependentFileProviders düğümüne ve alt düğümlerine odaklanalım. Her alt düğüm, Visual Studio'nun dosyaları iç içe yerleştirmede kullanabileceği bir kural türüdür. Örneğin, aynı dosya adına sahip olmak, ancak farklı bir uzantı bir kural türüdür. Kullanılabilir kurallar şunlardır:

  • extensionToExtension: file.js file.ts altına yerleştirmeye yönelik bu tür bir kural kullanın

  • fileSuffixToExtension: file-vsdoc.js file.js altına yerleştirmeye yönelik bu kural türünü kullanın

  • addedExtension: file.html.css file.html altına yerleştirmeye yönelik bu tür bir kural kullanın

  • pathSegment: jquery.min.js jquery.js altına yerleştirmeye yönelik bu tür bir kural kullanın

  • allExtensions: Dosyayı iç içe getirmek için bu tür bir kural kullanın.* file.js altında

  • fileToFile: .bowerrc altında bower.json iç içe yerleştirmek için bu tür bir kural kullanın

extensionToExtension sağlayıcısı

Bu sağlayıcı, belirli dosya uzantılarını kullanarak dosya iç içe yerleştirme kuralları tanımlamanızı sağlar. Aşağıdaki örneği inceleyin:

extentionToExtension örnek kurallarıextentionToExtension örnek etkisi

  • cart.js, ilk extensionToExtension kuralı nedeniyle cart.ts altında iç içe yerleştirilmiştir

  • cart.js cart.tsx'in altına iç içe yerleştirilmemiştir çünkü .ts kurallarda .tsx'den önce gelir ve yalnızca bir üst öğe olabilir

  • light.css ikinci extensionToExtension kuralı nedeniyle light.sass altında iç içe yerleştirilmiştir

  • üçüncü extensionToExtension kuralı nedeniyle home.html home.md altında iç içe yerleştirilmiştir

fileSuffixToExtension sağlayıcısı

Bu sağlayıcı aynı extensionToExtension sağlayıcısı gibi çalışır ve tek fark kuralın yalnızca uzantı yerine dosyanın son ekine bakmasıdır. Aşağıdaki örneği inceleyin:

fileSuffixToExtension örnek kurallarıfileSuffixToExtension örnek etkisi

  • portal-vsdoc.js, fileSuffixToExtension kuralı nedeniyle portal.js altında iç içe yerleştirilmiştir

  • kuralın diğer her yönü extensionToExtension ile aynı şekilde çalışır

addedExtension sağlayıcısı

Bu sağlayıcı, ek bir uzantı olmadan dosyaların altında ek bir uzantıyla iç içe yerleştirilmiştir. Ek uzantı yalnızca tam dosya adının sonunda görünebilir.

Aşağıdaki örneği inceleyin:

addedExtension örnek kurallarıaddedExtension örnek etkisi

  • file.html.css, addedExtension kuralı nedeniyle file.html altında iç içe yerleştirilmiştir

Not

Kural için addedExtension herhangi bir dosya uzantısı belirtmezseniz, tüm dosya uzantılarına otomatik olarak uygulanır. Başka bir deyişle, başka bir dosyayla aynı ada ve uzantıya sahip tüm dosyalara ek olarak uçta ek bir uzantı bulunur. Bu sağlayıcının etkisini yalnızca belirli dosya uzantılarıyla sınırlayamazsınız.

pathSegment sağlayıcısı

Bu sağlayıcı, dosyaları ek uzantı olmadan bir dosyanın altına ek bir uzantıyla iç içe aktarır. Ek uzantı yalnızca tam dosya adının ortasında görünebilir.

Aşağıdaki örneği inceleyin:

pathSegment örnek kurallarıpathSegment örnek etkisi

  • jquery.min.js pathSegment kuralı nedeniyle jquery.js altında iç içe yerleştirilmiştir

Not

  • Kural için pathSegment belirli bir dosya uzantısı belirtmezseniz, tüm dosya uzantıları için geçerlidir. Başka bir deyişle, başka bir dosyayla aynı ada ve uzantıya sahip olan ve ortada ek bir uzantı bulunan tüm dosyalar diğer dosyanın altına iç içe yerleştirilmiştir.

  • Kuralın etkisini pathSegment , aşağıdaki şekilde belirterek belirli dosya uzantılarıyla sınırlayabilirsiniz:

    "pathSegment": {
        "add": {
          ".*": [
            ".js",
            ".css",
            ".html",
            ".htm"
          ]
        }
    }
    

allExtensions sağlayıcısı

Bu sağlayıcı, herhangi bir uzantıya ancak aynı temel dosya adına sahip dosyalar için dosya iç içe yerleştirme kuralları tanımlamanızı sağlar. Aşağıdaki örneği inceleyin:

allExtensions örnek kurallarıallExtensions örnek etkisi

  • template.cs ve template.doc, allExtensions kuralı nedeniyle template.tt altında iç içe yerleştirilmiştir.

fileToFile sağlayıcısı

Bu sağlayıcı, dosya adlarının tamamına göre dosya iç içe yerleştirme kuralları tanımlamanızı sağlar. Aşağıdaki örneği inceleyin:

fileToFile örnek kurallarıfileToFile örnek etkisi

  • .bowerrc, fileToFile kuralı nedeniyle bower.json altında iç içe yerleştirilmiştir

Kural sırası

Sıralama, özel ayarlar dosyanızın her bölümünde önemlidir. Kuralların yürütülme sırasını, dependentFileProvider düğümünün içinde yukarı veya aşağı taşıyarak değiştirebilirsiniz. Örneğin, file.js file.ts üst öğesi yapan bir kuralınız ve file.coffee öğesini file.ts üst öğesi yapan başka bir kuralınız varsa, üç dosyanın tümü mevcut olduğunda bunların dosyada görünme sırası iç içe geçirme davranışını belirler. file.ts yalnızca bir üst öğeye sahip olabileceğinden, ilk yürüten kural kazanır.

Sıralama, yalnızca bir bölüm içindeki dosyalar için değil, kural bölümlerinin kendileri için de önemlidir. Bir dosya çifti bir dosya iç içe geçme kuralıyla eşleştirilir eşleşmez, dosyadaki diğer kurallar yoksayılır ve bir sonraki dosya çifti işlenir.

Dosya iç içe yerleştirme düğmesi

Kendi özel ayarlarınız da dahil olmak üzere tüm ayarları Çözüm Gezgini aynı düğme aracılığıyla yönetebilirsiniz:

Özel dosya iç içe yerleştirme kurallarını etkinleştirme

Projeye özgü ayarlar oluşturma

Her çözümün ve projenin sağ tıklama menüsü (bağlam menüsü) aracılığıyla çözüme özgü ve projeye özgü ayarlar oluşturabilirsiniz:

Çözüme ve projeye özgü iç içe yerleştirme kuralları

Çözüme özgü ve projeye özgü ayarlar, etkin Visual Studio ayarlarıyla birleştirilir. Örneğin, projeye özgü boş bir ayarlar dosyanız olabilir, ancak Çözüm Gezgini dosyaları iç içe yerleştirmeye devam ediyordur. İç içe yerleştirme davranışı, çözüme özgü ayarlardan veya Visual Studio ayarlarından geliyor. Dosya iç içe yerleştirme ayarlarını birleştirme önceliği: Visual Studio > Çözüm > Projesi.

Visual Studio'ya, dosyalar diskte olsa bile, Araçlar>Seçenekleri>ASP.NET Temel>Dosya İç İçe Yerleştirme altında Çözümü ve proje ayarlarını yoksay seçeneğini etkinleştirerek çözüme ve projeye özgü ayarlarıyoksaymasını söyleyebilirsiniz.

Bunun tersini yapabilir ve kök düğümü true olarak ayarlayarak Visual Studio'ya yalnızca çözüme veya projeye özgü ayarları kullanmasını söyleyebilirsiniz. Visual Studio, dosyaları bu düzeyde birleştirmeyi durdurur ve hiyerarşinin üst kısmındaki dosyalarla birleştirmez.

Çözüme özgü ve projeye özgü ayarlar kaynak denetiminde denetlenebilir ve kod tabanında çalışan tüm ekip bunları paylaşabilir.

Proje için dosya iç içe yerleştirme kurallarını devre dışı bırakma

Ekleme yerine sağlayıcının kaldırma eylemini kullanarak belirli çözümler veya projeler için mevcut genel dosya iç içe yerleştirme kurallarını devre dışı bırakabilirsiniz. Örneğin, bir projeye aşağıdaki ayarlar kodunu eklerseniz, bu proje için genel olarak mevcut olabilecek tüm pathSegment kuralları devre dışı bırakılır:

"dependentFileProviders": {
  "remove": {
    "pathSegment": {}
  }
}