Visual Studio - File Resx default 'internal' ke 'publik'


165

Setiap kali saya mengedit file sumber daya di VS, itu meregenerasi kode yang sesuai dan menetapkan pengubah akses kelas ke internal.
Menyusahkan Ctrl-F -> ReplaceAll setiap kali saya mengedit resx. Apakah ada properti / pengaturan sehingga saya dapat mengatur default ini untuk publik?

internal class MyResource {

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

}

Saya membutuhkan semua orang internaluntuk menjadi publicsepanjang waktu.


@ jvanrhyn: Karena saya perlu mengakses manajer sumber dayanya dari proyek lain dalam solusi.
Robin Maben

Jawaban:


334

Alih-alih ResXFileCodeGenerator, gunakan PublicResXFileCodeGenerator.

Anda dapat melakukan ini dengan mengatur ini sebagai properti Alat Kustom di Jendela Properti untuk file Resx yang Anda inginkan untuk akses publik.

Sunting : Secara alternatif Anda dapat mengatur Pengubah Akses ke publik ketika Anda membuka file resx di Visual Studio. Kotak dropdown Access Modifier dapat ditemukan di bagian atas formulir.


13
(Jawaban yang bagus; tetapi hanya beberapa catatan; bisa juga GlobalResourceProxyGeneratorbukan hanya ResXFileCodeGenerator; dan perhatikan juga bahwa dropdown "Akses Modofier" sering dinonaktifkan)
Marc Gravell

@Anton: Terima kasih, bekerja dalam kasus saya. Juga, saya perhatikan bahwa mengubah pengubah akses dari drop down mengubah alat yang sesuai.
Robin Maben

1
@conqenator: itu sebabnya saya mengusulkan menggunakan dropdown Access Modifier sebagai cara alternatif untuk mencapai hasil yang sama :)
Anton

2
BTW jika dropdown Access Modifier dinonaktifkan, Anda dapat mencoba mengubah properti Alat Kustom ke ResXFileCodeGenerator, jika itu bukan nilai yang sudah sewajarnya. Setidaknya itu berhasil bagi saya dalam proyek MVC pada VS 2010.
Manuel Navarro

1
Bagi saya dengan Visual Studio 2017 memilih PublicResXFileCodeGeneratorsatu - satunya membuat kelas Resources menjadi publik, bukan konstruktornya.
Laurent Michel

13
  1. Klik kanan pada file Resource ( resource.resx) => Properti .

  2. Alat Kustom => Ubah kePublicResXFileCodeGenerator


-7

Mungkin cara termudah adalah membuat kelas turunan dengan ctor Publik?

Kelas yang dihasilkan:

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

Kelas turunan:

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

    }
}

13
Ini tidak mungkin. Anda akan mendapatkan kesalahan CS0060 Aksesibilitas tidak konsisten: kelas dasar 'Strings' kurang dapat diakses daripada kelas 'PublicStrings'
David Gardiner
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.