Visual Studio - Resx Dosyası varsayılan 'dahili' - 'genel'


165

Bir kaynak dosyasını VS'de her düzenlediğimde, karşılık gelen kodu yeniden oluşturur ve sınıf erişim değiştiricisini dahili olarak ayarlar.
Resx'i her düzenlediğimde Ctrl-F -> ReplaceAll için bir acı. Bunu herkese açık hale getirebilmem için bir özellik / ayar var mı?

internal class MyResource {

     internal static global::System.Resources.ResourceManager ResourceManager {...}

}

Bunların her zaman internalolmasına ihtiyacım var public.


@jvanrhyn: Çünkü çözümdeki başka bir projeden kaynak yöneticisine erişmem gerekiyor.
Robin Maben

Yanıtlar:


335

Yerine ResXFileCodeGenerator, kullanın PublicResXFileCodeGenerator.

Bunu, genel erişim istediğiniz Resx dosyasının Özellik Penceresinde Özel Araç özelliği olarak ayarlayarak yapabilirsiniz .

Düzenleme : Alternatif olarak, Resx dosyasını Visual Studio'da açtığınızda Access Değiştirici'yi herkese açık olarak ayarlayabilirsiniz. Erişim Değiştirici açılır kutusu formun üst kısmında bulunabilir.


13
(İyi cevap; ama sadece bazı notlar; GlobalResourceProxyGeneratorsadece değil, ResXFileCodeGeneratoraynı zamanda "Erişim Modofier" açılır listesinin genellikle devre dışı bırakıldığını da unutmayın)
Marc Gravell

@Anton: Teşekkürler, benim durumumda çalışıyor. Ayrıca, erişim değiştiricisini açılır menüden değiştirmenin ilgili aracı değiştirdiğini fark ettim.
Robin Maben

1
@conqenator: Bu nedenle Access Modifier açılır menüsünü aynı sonuca ulaşmanın alternatif bir yolu olarak kullanmayı önerdim :)
Anton

2
BTW, Access Modifier açılır listesinden devre dışı bırakılmışsa, değer alredy değilse, Özel Araç özelliğini ResXFileCodeGenerator olarak değiştirmeyi deneyebilirsiniz. En azından bu benim için VS 2010'daki bir MVC projesinde çalışıyor.
Manuel Navarro

1
Benim için Visual Studio 2017 ile PublicResXFileCodeGeneratorsadece sınıfını seçiyor, yapıcısını değil Kaynaklar'ı herkese açık hale getiriyor.
Laurent Michel

13
  1. Kaynak dosyaya ( resource.resx) => Özellikler'e sağ tıklayın .

  2. Özel Araç => DeğiştirPublicResXFileCodeGenerator


-7

Belki de en kolay yol bir Public ctor ile türetilmiş bir sınıf yaratmaktır?

Oluşturulan sınıf:

 [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
    internal Strings() {
    }

Türetilmiş sınıf:

public class PublicStrings : Strings
{
    /// <summary>
    /// Public localization Strings.
    /// </summary>
    public PublicStrings()
    {

    }
}

13
Bu mümkün değil. Bir hata iletisi alırsınız CS0060 Tutarsız erişilebilirlik: 'Strings' temel sınıfına 'PublicStrings' sınıfından daha az erişilebilir
David Gardiner
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.