Visual Studio - Resx-Datei Standard 'intern' bis 'öffentlich'

165

Jedes Mal, wenn ich eine Ressourcendatei in VS bearbeite, wird der entsprechende Code neu generiert und der Klassenzugriffsmodifikator auf intern gesetzt.
Es ist ein Problem für Strg-F -> ReplaceAll jedes Mal, wenn ich den Resx bearbeite. Gibt es eine Eigenschaft / Einstellung, mit der ich diese standardmäßig auf öffentlich setzen kann?

internal class MyResource {

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

}

Ich brauche all diese internal, um die publicganze Zeit zu sein.

Robin Maben
quelle
@jvanrhyn: Weil ich von einem anderen Projekt in der Lösung aus auf den Ressourcenmanager zugreifen muss.
Robin Maben

Antworten:

334

ResXFileCodeGeneratorVerwenden Sie anstelle von die PublicResXFileCodeGenerator.

Sie können dies tun, indem Sie dies als Eigenschaft des benutzerdefinierten Tools im Eigenschaftenfenster für die Resx-Datei festlegen, auf die Sie öffentlich zugreifen möchten.

Bearbeiten : Alternativ können Sie den Zugriffsmodifikator auf öffentlich setzen, wenn Sie die resx-Datei in Visual Studio öffnen. Das Dropdown-Feld Zugriffsmodifikator befindet sich oben im Formular.

Anton
quelle
13
(Gute Antwort; aber nur einige Notizen; es könnte auch sein GlobalResourceProxyGenerator, nicht nur ResXFileCodeGenerator; und beachten Sie auch, dass das Dropdown-Menü "Access Modofier" häufig deaktiviert ist)
Marc Gravell
@Anton: Danke, funktioniert in meinem Fall. Außerdem habe ich festgestellt, dass durch Ändern des Zugriffsmodifikators aus der Dropdown-Liste das entsprechende Tool geändert wird.
Robin Maben
1
@conqenator: Deshalb habe ich vorgeschlagen, das Dropdown-Menü Access Modifier als alternative Methode zu verwenden, um das gleiche Ergebnis zu erzielen :)
Anton
2
Übrigens, wenn die Dropdown-Liste Zugriffsmodifikator deaktiviert ist, können Sie versuchen, die Eigenschaft Benutzerdefiniertes Tool in ResXFileCodeGenerator zu ändern, wenn dies nicht bereits der Wert ist. Zumindest diese Arbeit für mich in einem MVC-Projekt auf VS 2010.
Manuel Navarro
1
Bei Visual Studio 2017 wird bei Auswahl der Option PublicResXFileCodeGeneratornur die Ressourcenklasse öffentlich und nicht der Konstruktor.
Laurent Michel
13
  1. Klicken Sie mit der rechten Maustaste auf Ressourcendatei ( resource.resx) => Eigenschaften .

  2. Benutzerdefiniertes Tool => Wechseln zuPublicResXFileCodeGenerator

user274294
quelle
-7

Vielleicht ist der einfachste Weg, eine abgeleitete Klasse mit einem öffentlichen Ctor zu erstellen?

Die generierte Klasse:

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

Die abgeleitete Klasse:

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

    }
}
Trond Ivar Lindberg
quelle
13
Das ist nicht möglich. Sie erhalten eine Fehlermeldung CS0060 Inkonsistente Zugänglichkeit: Basisklasse 'Strings' ist weniger zugänglich als Klasse 'PublicStrings'
David Gardiner