Announcement

Collapse
No announcement yet.

Kompilieren zur Laufzeit

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Kompilieren zur Laufzeit

    Wie kann ich Code zur Laufzeit kompilieren -
    in meinen Fall zum Instanziieren von Webservices zur Laufzeit, bräuchte ich ein Tutorial, der aus meiner WSDL-Klasse lauffähigen Code macht und das zur Laufzeit.
    Da ja VS nur die WSDL.exe oder die Web-Referenzes anbieten bin ich auf der suche nach einer eigenen Lösung.

    Hat jemand von euch Erfahrung damit?

    Vielen Dank im Vorraus.

  • #2
    Hallo,

    schau mal unter:

    http://www.codeproject.com/csharp/codecompilation.asp#xx1103569xx

    oder unter

    http://www.tutorials.de/tutorials161124.html

    Viele liebe Grüße, Marku

    Comment


    • #3
      Servus,

      scheinbar bist du gerade an etwas ähnlichem wie ich dran.
      Schau mal ob dir das weiter hilft.
      Es erzeugt dir zur Runtime eine Assembly der Wsdl-Proxy

      using System;
      using System.CodeDom;
      using System.CodeDom.Compiler;
      using System.Web.Services.Description;
      using Microsoft.CSharp;
      using System.IO;
      using System.Reflection;
      using System.Text;

      namespace Compilation
      {
      public class CompilerClass
      {
      private CodeNamespace CodeSpace = null;
      private ServiceDescription ServDesc = null;

      public CompilerClass(ServiceDescription ServDesc,CodeNamespace CodeSpace)
      {
      this.CodeSpace = CodeSpace;
      this.ServDesc = ServDesc;

      }

      public Assembly compileFile()
      {
      ServiceDescriptionImporter ServDescImp = new ServiceDescriptionImporter();
      ServDescImp.AddServiceDescription(ServDesc, null, null);
      ServDescImp.Import(CodeSpace, null);
      CSharpCodeProvider CsCodeProvider = new CSharpCodeProvider();
      ICodeGenerator icgen = CsCodeProvider.CreateGenerator();
      StringBuilder builder = new StringBuilder();
      StringWriter stringwr = new StringWriter(builder);
      icgen.GenerateCodeFromNamespace(CodeSpace, stringwr, null);
      stringwr.Close();

      CompilerParameters compileparam = new CompilerParameters();

      String [] parameter = {"System.dll","System.Xml.dll","System.Web.Service s.dll"};
      foreach (String s in parameter){compileparam.ReferencedAssemblies.Add(s );}

      compileparam.GenerateExecutable = false;
      compileparam.GenerateInMemory = true;
      compileparam.IncludeDebugInformation = false;

      ICodeCompiler icodecompiler = CsCodeProvider.CreateCompiler();
      CompilerResults result = icodecompiler.CompileAssemblyFromSource(compilepar am, builder.ToString());

      if(result.Errors.Count > 0)
      throw new Exception(string.Format("Errors while compiling detected!"));
      return result.CompiledAssembly;
      }
      }
      }

      Bei Fraben schau einfach mal bei uns vorbei: http://www.mycsharp.de

      grüße

      Jör

      Comment

      Working...
      X