2008-09-26 13 views
22

Esto es lo que me gustaría hacer:¿Hay alguna manera de hacer públicos los archivos de recursos de Strongly Typed (en lugar de internos)?

Quiero crear un proyecto de biblioteca que contenga mis archivos de recursos (es decir, etiquetas UI y lo que sea). Me gustaría usar la biblioteca de recursos tanto en mi UI como en mis Pruebas. (Es decir, básicamente tengo un lugar común para mis recursos al que hago referencia desde proyectos múltiples.)

Desafortunadamente, debido a que StronglyTypedResourceBuilder (la clase .Net que genera el código para Recursos) hace que los archivos de recursos sean internos por defecto, puedo ' t hacer referencia a mis recursos fuertemente tipados en la biblioteca de otro proyecto (es decir, mi UI o pruebas), sin pasar por aros (es decir, algo similar a lo que se describe here, o escribir una clase/función de contenedor público).

Lamentablemente, ambas soluciones eliminan mi capacidad para mantener las referencias fuertemente tipadas.

¿Alguien ha encontrado una forma sencilla de crear recursos .Net fuertemente tipados a los que se puede hacer referencia desde múltiples proyectos?

Preferiría evitar tener que usar un evento de compilación para lograr esto (es decir, para hacer algo así como reemplazar todas las instancias de 'interno' por 'público', pero eso es básicamente mi plan de recuperación si no puede encontrar una respuesta ..

Respuesta

37

No está seguro de qué versión de Visual Studio que está utilizando, así que voy a poner los pasos de cualquiera de los dos:

VS 2008 - Al abrir el resx de vista del diseño, hay una opción en la parte superior junto Añadir Recurso y Eliminar Recurso, llamado Modificador de Acceso, es un menú desplegable donde puede cambiar el código generado de interno a público.

VS 2005 - No tiene la opción de generar el código como en VS 2008. Fue una característica que se agregó, debido a este dolor de cabeza. Aunque hay trabajo alrededor. Puede usar un generador de terceros como este tool o puede usar el atributo InternalsVisibleTo en su AssemblyInfo.cs para agregar los proyectos que tendrán acceso a las clases internas de su biblioteca de recursos.

+0

Perfecto, ¡Gracias! No había visto antes el atributo InternalsVisibleTo, pero eso es exactamente lo que necesitaba. Me permite mantener las cosas simples, limpias, y no tengo que instalar ResXFileCodeGeneratorEx. –

+0

El paso VS 2008 también funciona para VS 2010. ¡Gracias! –

2

Visual Studio 2008 que permite seleccionar si la clase de recurso generado debe ser interna o pública. también existe la ResXFileCodeGeneratorEx, lo que debería hacer eso para Visual Studio 2005.

+0

Estoy usando VS 2005, por lo que ResXFileGeneratorEx hubiera sido el camino a seguir. ¡Gracias por tu respuesta! –

0

de el diseñador del conjunto de datos y con la ventana de propiedades visible, hay una propiedad "Modificador". Para sus conjuntos de datos, es probable que diga interna.

No sé si hay una configuración para establecer por defecto todos los nuevos datasets en público.

Cuestiones relacionadas