c# - resources asp net
Leer recursos de un archivo DLL (2)
Tengo dos proyectos de Visual Basic 2008: uno es un proyecto de biblioteca de clase y otro es un proyecto de Windows Forms. En el proyecto de biblioteca de clase, he definido algunas cadenas en los recursos del proyecto (propiedades del proyecto> pestaña Recursos).
Construyo ese proyecto de biblioteca de clase y obtengo el archivo DLL de la carpeta de depuración y lo agrego como referencia en mi proyecto de Windows Forms.
¿Cómo leo esas cadenas del archivo DLL al que se hace referencia?
Si bien puede cargar dinámicamente la DLL como sugiere Ho, está bien utilizar una referencia como lo ha hecho. De hecho, recomendaría utilizar una referencia a menos que tuvieras un requisito particular para cargar dinámicamente el conjunto de recursos.
En cuanto al acceso a los recursos, hay algunas cosas que debe hacer.
En el conjunto de recursos, deberá asegurarse de que los recursos sean públicos. De forma predeterminada, los recursos están configurados en interno, lo que significa que no verá los recursos en la aplicación de winforms. Haga doble clic en Properties / Resources.resx para abrir la vista de recursos. En la barra de herramientas superior, verá una etiqueta "Modificador de acceso" junto a un menú desplegable desplegable. Cambiar la selección a público.
Deberá hacer referencia al ensamblaje desde la aplicación de formularios. Usted ha declarado que ya ha hecho esto. Solo una nota de que una mejor manera de hacerlo es crear una solución que contenga ambos proyectos. Luego, en la aplicación de formularios, elige agregar referencia. Haga clic en la pestaña Proyectos en la parte superior. Haga doble clic en el nombre del proyecto DLL de recursos. Esto funciona mejor que hacer referencia directamente a la DLL de depuración, ya que significa que si cambia entre una versión de compilación y depuración en su aplicación de formularios, se compilará automáticamente una versión de depuración / depuración de su conjunto de recursos.
Una vez que haya agregado la referencia, simplemente puede hacer referencia al tipo de DLL de recursos, por ejemplo
ResourceDLLNamespace.Properties.Resource.ResourceName
Solo una nota, debe tener en cuenta los conflictos de nombres de tipos si está utilizando el mismo espacio de nombres para su aplicación de formularios y su DLL de recursos. En esta situación, tanto la aplicación de formularios tendrá acceso a su propia clase Properties.Resources como a la de la DLL de recursos. Puedes hacer dos cosas para evitar esto:
- Use un espacio de nombre diferente entre los dos ensamblajes
- En el conjunto de recursos, no incluya un diccionario de recursos Properties / Resources.resx predeterminado. Elimínelo y añada manualmente un nuevo recurso, es decir, agregue un nuevo artículo y seleccione "Archivo de recursos". Debería encontrar que no podrá agregar el nuevo diccionario de recursos a la carpeta Propiedades; agréguelo a la raíz o a alguna otra carpeta que necesite. Esto le dará automáticamente un nombre de tipo diferente en virtud de estar en una carpeta diferente. Sin embargo, es posible que desee evitar el uso del nombre del archivo de recursos de "Recursos", como si tuviera todos los espacios de nombres relevantes en el alcance a través de las declaraciones obtendrá el mismo problema que el compilador no sabrá qué versión de Recursos utilizar.
-Donovan
Creo que solo usas System.Reflection.Assembly.Load
para cargar el otro ensamblaje y luego usas el constructor de System.Resources.ResourceManager
que toma un ensamblado.
Aquí hay un enlace que muestra una muestra de cómo hacer esto:
http://msdn.microsoft.com/en-us/library/aa984408%28VS.71%29.aspx
Tenga en cuenta que no creo que necesite una referencia para que esto funcione.