c# - How to create at runtime a .NET exe file assembly from already compiled classes -


i need create executable file assembly @ runtime. main goal compile types actual project (.dll) performing compilation task, without using strings keeping code needs compiled output exe file. maintaining strings during code development/refactoring nightmare. shown in example below, when refactor class codetocompile, need remember change string codetocompile in runtimecompiler.compile() method:

using system; using system.codedom.compiler;  using microsoft.csharp;  namespace runtimecompiler {     public class compiler     {         public void compile()         {             string codetocompile =                  @"public class codetocompile                 {                     public static void main(string[] args)                     {                         console.readline();                     }                 }";              csharpcodeprovider codeprovider = new csharpcodeprovider();             icodecompiler icc = codeprovider.createcompiler();             compilerparameters parameters = new compilerparameters                                                 {                                                     generateexecutable = true,                                                     outputassembly = "generated.exe"                                                 };              compilerresults results = icc.compileassemblyfromsource(parameters, codetocompile);         }      }      public class codetocompile     {         public static void main(string[] args)         {             console.readline();         }     } } 

what achive changing string code needs compiled reference of type needs compiled .exe assembly.

string codetocompile = "..."; //codetocompile source code compilerresults results = icc.compileassemblyfromsource(parameters, codetocompile);  compilerresults results = icc.compileassemblyfromsource(parameters, typeof(codetocompile)); 

any ideas best way achieve this?

i have found information how dynamically compile c# code string using system.codedom.compiler namespace, shown above. method runtime object uncompiled code string job. research in direction did not give me solution , doubt possible in easy way.

my second idea use mechanism "move" compiled type running assembly newly created one, unfortunately haven't found solution task.

...without using strings keeping code needs compiled output exe file. maintaining strings during code development/refactoring nightmare...

my advice here .net globalization

globalization involves designing , developing world-ready app supports localized interfaces , regional data users in multiple cultures...the handling of characters and strings central focus of globalization, because each culture or region may use different characters , character sets , sort them differently. more...

an alternative codedom.compiler .net's reflection emit:

...the system.reflection.emit namespace allow compiler or tool emit metadata , microsoft intermediate language (msil) @ run time , optionally generate portable executable (pe) file on disk. script engines , compilers primary users of namespace. more...


Comments

Popular posts from this blog

javascript - Jquery show_hide, what to add in order to make the page scroll to the bottom of the hidden field once button is clicked -

javascript - Highcharts multi-color line -

javascript - Enter key does not work in search box -