Je tente de générer un fichier d'assemblage avec certaines ressources. J'utilise System.Reflection.Emit.ModuleBuilder
pour définir les ressources. AssemblyBuilder
enregistrer l'assemblage sans donner d'erreurs, mais quand j'essaye de lire les ressources, ResourceManager
n'a aucune entrée dans ResourceSets
. Je ne suis pas sûr AssemblyBuilder
ne pas enregistrer des ressources ajoutées ou mon code de lecture de ressources a des problèmes.Réflexion | Emettre | Génération de ressources dynamiques - Ajout de valeurs de ressources à l'aide de IResourceWriter.AddResource (clé, valeur) impossible à lire
code de génération de l'Assemblée:
public void GenerateAsm()
{
string myAsmName = "MyAssembly.resources";
string myAsmFileName = myAsmName + ".dll";
string resourceName = "MyAssembly.Resource.fr.resources";
AppDomain appDomain = Thread.GetDomain();
AssemblyName asmName = new AssemblyName();
asmName.Name = myAsmName;
AssemblyBuilder myAsmBuilder = appDomain.DefineDynamicAssembly(asmName, AssemblyBuilderAccess.RunAndSave);
ModuleBuilder myModuleBuilder = myAsmBuilder.DefineDynamicModule(myAsmFileName,myAsmFileName);
IResourceWriter rw = myModuleBuilder.DefineResource(resourceName, "My Description", ResourceAttributes.Public);
rw.AddResource("ResKey1", "Resource value 1.");
rw.AddResource("ResKey2", "Resource value 2.");
myAsmBuilder.Save(myAsmFileName);
}
code de lecture des ressources:
public void ReadResource()
{
ResourceManager rm = new ResourceManager("MyAssembly.Resource.fr.resources", Assembly.LoadFrom("MyAssembly.resources.dll"));
string greeting = rm.GetString("ResKey1");
}
gestionnaire de ressources peut charger des ressources, mais il ne dispose pas de paires de valeurs clés.