Ist es möglich, eine dynamische assembly auf der Festplatte?

Ich kaufte vor kurzem Ayende Buch Bau von DSLs in Boo (kaufen Sie es, Lesen Sie es, es ist genial), aber ich komme gegen ein Umsetzung problem und ich möchte sehen, was der generierte code aussieht. Ich normalerweise verwenden würden, Reflektor Blick auf den code werfen, aber in diesem Fall die Baugruppen sind dynamisch und nur im Arbeitsspeicher. Gibt es eine Möglichkeit zum speichern von dynamischen Assemblys auf der Festplatte, so dass ich Sie abzubilden?

BEARBEITEN /Meine Antwort:

Wow, es dauerte eine Weile, um zu kommen zurück zu dieser. Leider verließ ich eine wichtige bisschen von der ursprünglichen Frage.

Wichtige Teil: ich bin mit Ayende ist RhinoDSL Bibliothek, denn er empfiehlt im Buch. Ich habe Zugang zu den boo compiler in meiner Unterklasse von DslEngine die wie folgt aussieht:

public class JobEngine : DslEngine
{
    protected override void CustomizeCompiler(Boo.Lang.Compiler.BooCompiler compiler, Boo.Lang.Compiler.CompilerPipeline pipeline, string[] urls)
    {
        pipeline.Insert(1, new ImplicitBaseClassCompilerStep(typeof (JobBase), "Prepare", "JobLanguage", "log4net", "Quartz"));
    }
}

Ändern Sie die Beine und bekommen, was ich wollte, ich brauchte, um fügen Sie eine Zeile...

public class JobEngine : DslEngine
{
    protected override void CustomizeCompiler(Boo.Lang.Compiler.BooCompiler compiler, Boo.Lang.Compiler.CompilerPipeline pipeline, string[] urls)
    {
        compiler.Parameters.GenerateInMemory = false; //<--- This one.
        pipeline.Insert(1, new ImplicitBaseClassCompilerStep(typeof (JobBase), "Prepare", "JobLanguage", "log4net", "Quartz"));
    }
}

Dadurch verursacht, dass der compiler die Ausgabe der Montage an meiner ~\LocalSettings zuzugreifen\Temp-Verzeichnis und dann könnte ich dann entsprechend an. Es ist wichtig zu beachten, dass die Herstellung, die änderung verursacht den rest des Programms zu brechen (RhinoDSL konnte keine mehr finden die Versammlungen im Gedächtnis, weil ich die Ausgabe auf die Festplatte), so ist dies nur sinnvoll, wie ein debugging-tool.

  • Mit dem Objekt-XML-Serialisierung?!.
  • tun Sie erstellen, die Assemblys über CodeDom?
InformationsquelleAutor Jason Punyon | 2010-01-13
Schreibe einen Kommentar