Saltar al contenido

Cree el archivo designer.cs a partir del archivo de recursos generado por ResXRersourcewriter

Agradecemos tu apoyo para extender nuestras crónicas referente a las ciencias de la computación.

Solución:

Abra el archivo resx y en su barra de herramientas hay un Access Modifier menú. Establezca esto en Public. Esto generará un *.Designer.cs Archivo.

ingrese la descripción de la imagen aquí

Si el archivo se agrega a un proyecto de Visual Studio, debe configurar el Custom Tool propiedad de la .resx archivo a ResXFileCodeGenerator. Luego, VS creará automáticamente el archivo de diseñador necesario.

En un proyecto, hice un script T4 que escanea la carpeta dentro del proyecto en busca de todas las imágenes y permite crear un archivo de recursos correspondiente con un clic.

Aquí está la parte necesaria del script T4:

var rootPath = Path.GetDirectoryName(this.Host.TemplateFile);

var imagesPath = Path.Combine(rootPath, "Images");
var resourcesPath = Path.Combine(rootPath, "Resources");

var pictures = Directory.GetFiles(imagesPath, "*.png", SearchOption.AllDirectories);

EnvDTE.DTE dte = (EnvDTE.DTE)((IServiceProvider)this.Host)
                   .GetService(typeof(EnvDTE.DTE));

EnvDTE.Projects projects = dte.Solution.Projects;
EnvDTE.Project iconProject = projects.Cast().Where(p => p.Name == "Icons").Single();
EnvDTE.ProjectItem resourcesFolder = iconProject.ProjectItems.Cast().Where(item => item.Name == "Resources").Single();

// Delete all existing resource files to avoid any conflicts.
foreach (var item in resourcesFolder.ProjectItems.Cast())

    item.Delete();


// Create the needed .resx file fore each picture.
foreach (var picture in pictures)

    var resourceFilename =  Path.GetFileNameWithoutExtension(picture) + ".resx";
    var resourceFilePath = Path.Combine(resourcesPath, resourceFilename);

    using (var writer = new ResXResourceWriter(resourceFilePath))
    
        foreach (var picture in picturesByBitmapCollection)
        
            writer.AddResource(picture.PictureName, new ResXFileRef(picture, typeof(Bitmap).AssemblyQualifiedName));
        
    


// Add the .resx file to the project and set the CustomTool property.
foreach (var resourceFile in Directory.GetFiles(resourcesPath, "*.resx"))

    var createdItem = resourcesFolder.Collection.AddFromFile(resourceFile);
    var allProperties = createdItem.Properties.Cast().ToList();
    createdItem.Properties.Item("CustomTool").Value = "ResXFileCodeGenerator";

He aplanado un poco el código anterior, porque en mi solución real uso una clase personalizada para cada imagen en lugar del nombre de archivo simple para admitir también el mismo nombre de archivo en diferentes subcarpetas (al usar una parte de la estructura de carpetas para el espacio de nombres Generacion). Pero para un primer disparo, lo anterior debería ayudarlo.

Haga clic derecho en el Resources.resx y seleccione “Ejecutar herramienta personalizada”.

Comentarios y valoraciones del tutorial

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *