2010-11-25 24 views
120

Cada vez que edito un archivo de recursos en VS, se regenera el código correspondiente y se establece el modificador de acceso de clase en interno.
No funciona Ctrl-F -> Reemplazar todo cada vez que edito el resx. ¿Hay una propiedad/configuración para que pueda configurar esto para público?Visual Studio - Archivo Resx predeterminado 'interno' a 'público'

internal class MyResource { 

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

} 

Necesito todos los internal ser public todo el tiempo.

+0

@jvanrhyn: Porque necesito acceder a su administrador de recursos desde otro proyecto de la solución. –

Respuesta

240

En lugar del ResXFileCodeGenerator, use PublicResXFileCodeGenerator.

Puede hacer esto estableciendo esto como la propiedad Herramienta personalizada en la Ventana de propiedades para el archivo Resx al que desea tener acceso público.

Editar: Alternativamente, puede establecer el Modificador de acceso en público cuando abre el archivo resx en Visual Studio. El cuadro desplegable Modificador de acceso se puede encontrar en la parte superior del formulario.

+11

(Buena respuesta, pero solo algunas notas; también podría ser 'GlobalResourceProxyGenerator', no solo' ResXFileCodeGenerator'; y tenga en cuenta también que el menú desplegable "Access Modofier" a menudo está deshabilitado) –

+3

@Marc: Thx, aprendo algo nuevo todos los días :) +1. – Anton

+0

@ Anton: Gracias, funciona en mi caso. Además, noté que cambiar el modificador de acceso del menú desplegable cambia la herramienta correspondiente. –

-5

¿Quizás la forma más fácil es crear una clase derivada con un ctor público?

La clase generada:

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

La clase derivada:

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

    } 
} 
+9

Esto no es posible. Obtendrá un error CS0060 Accesibilidad incoherente: la clase base 'Strings' es menos accesible que la clase 'PublicStrings' –

1

1) Haz clic derecho en el archivo de recursos (resource.resx) => Propiedades.

2) Herramienta personalizada => Cambiar a PublicResXFileCodeGenerator Listo.

Cuestiones relacionadas