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.

Robin Maben
sumber
@ 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.

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

pengguna274294
sumber
-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()
    {

    }
}
Trond Ivar Lindberg
sumber
13
Ini tidak mungkin. Anda akan mendapatkan kesalahan CS0060 Aksesibilitas tidak konsisten: kelas dasar 'Strings' kurang dapat diakses daripada kelas 'PublicStrings'
David Gardiner