¿Hay alguna manera de hacer públicos los archivos de recursos fuertemente tipados (en lugar de internos)?

StackOverflow https://stackoverflow.com/questions/140937

Pregunta

Esto es lo que me gustaría hacer:

Deseo crear un proyecto de biblioteca que contenga mis archivos de recursos (es decir, etiquetas de interfaz de usuario y otras cosas). Luego me gustaría usar la biblioteca de recursos tanto en mi interfaz de usuario como en mis pruebas. (Es decir, básicamente tengo un lugar común para mis recursos a los que hago referencia en varios proyectos).

Desafortunadamente, debido a que StronglyTypedResourceBuilder (la clase .Net que genera el código para Recursos) hace que los archivos de recursos sean internos de forma predeterminada, no puedo hacer referencia a mis recursos fuertemente tipados en la biblioteca desde otro proyecto (es decir, mi interfaz de usuario o pruebas) , sin saltar por los aros (es decir, algo similar a lo que se describe aquí , o escribir una clase / función de contenedor público).

Desafortunadamente, ambas soluciones eliminan mi capacidad de mantener las referencias fuertemente tipadas.

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

Preferiría evitar tener que usar un evento de compilación para lograr esto (es decir, hacer algo como reemplazar todas las instancias de 'interno' con 'público', pero ese es básicamente mi plan alternativo si puedo no encuentre una respuesta ..

¿Fue útil?

Solución

No estoy seguro de qué versión de Visual Studio está utilizando, por lo que pondré los pasos para cualquiera de ellos:

VS 2008: cuando abre el archivo resx en la vista de diseño, hay una opción en la parte superior junto a Agregar recurso y Eliminar recurso, llamada 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. Sin embargo, hay trabajo alrededor. Puede utilizar un generador de terceros como esta herramienta o puede usar el atributo InternalsVisibleTo en su información de ensamblaje .cs para agregar los proyectos que tendrán acceso a las clases internas de su biblioteca de recursos.

Otros consejos

Visual Studio 2008 le permite seleccionar si la clase de recurso generada debe ser interna o pública. También está el ResXFileCodeGeneratorEx , que debería hacerlo para Visual Studio 2005.

Desde el diseñador del conjunto de datos y con la ventana de propiedades visible, hay un " Modificador " propiedad. Para sus conjuntos de datos, es probable que sea interno.

No sé si hay una configuración para predeterminar todos los nuevos conjuntos de datos a público.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top