2009-12-12 16 views
11

Ich möchte eine Ressource-Datei erstellen (bei der Vorbereitung für die Bereitstellung), füllen Sie es mit bestimmten Einstellungen (große XML-Struktur) und einige Texte, aber ich bin mir nicht sicher, wie es geht Das.Ressource-Datei programmgesteuert erstellen

Ich habe einige Beispiele mit ResXResourceWriter gefunden, aber beim Versuch, es zu öffnen, kann den Ressourcenschlüssel nicht finden. Hier ist, was ich bisher:

private void simpleButton1_Click(object sender, EventArgs e) 
{ 
    using (System.IO.MemoryStream oStream = new System.IO.MemoryStream()) 
    { 
     this.layoutControl1.SaveLayoutToStream(oStream); 
     using (ResXResourceWriter oWriter = new ResXResourceWriter(@"..\..\Properties\LayoutControl.resources.Resx")) 
     { 
      oWriter.AddResource("one", oStream.GetBuffer()); 
      oWriter.Generate(); 
      oWriter.Close(); 
     } 
    } 

} 

private void simpleButton2_Click(object sender, EventArgs e) 
{ 
    ResourceManager rm = new ResourceManager("WindowsFormsApplication1.LayoutControl", Assembly.GetExecutingAssembly()); 
    var one = rm.GetObject("one"); 
    Console.WriteLine(""); 
} 

ich die Ressource erstellen, indem simpleButton1 klicken, ich dann die App beenden, tun ein Add-existing-Element in meinem Projekt neu kompilieren und simpleButton2 klicken, dann bekomme ich eine

MissingManifestResourceException (Es konnten keine geeigneten Ressourcen für die angegebene Kultur oder die neutrale Kultur gefunden werden. Stellen Sie sicher, dass "WindowsFormsApplication1.LayoutControl.resources" zum Kompilieren korrekt in die Assembly "WindowsFormsApplication1" oder alle Satellitenassemblies eingebettet wurde erforderlich sind ladbar und vollständig signiert.)

Kann mir jemand ein paar Hinweise geben oder noch besser, ein funktionierendes Beispiel? Und ich würde es vorziehen, wenn die Ressource in eine 'separate' Assembly wie 'normale' Ressourcendateien kompiliert würde.

Antwort

8

Sie sind ziemlich nah - der baseName, den Sie an den ResourceManager übergeben, ist ein bisschen aus.

Alle resx-Dateien, die Sie kompilieren, werden mit dem Standardnamespace plus beliebigen Ordnern im Pfad benannt. In Ihrem Beitrag sollten Sie "WindowsFormsApplication1.Properties.LayoutControl.resources" übergeben.

+1

danke djeebus, das hat super funktioniert !! – Jurjen

Verwandte Themen