none
компиляция на лету

    Question

  • Возник вопрос по компиляции на лету...

    Имеем код:

     

    public static string source = @"
        
    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;
    using System.Threading;
    
    namespace test
    {
      static class Program
      {
        [STAThread]
        static void Main()
        {
          for (; ; )
          {
            Thread.Sleep(500);
          }
        }
      }
    }
    "; 
    // Настройки компиляции 
                Dictionary<string, string> providerOptions = new Dictionary<string, string> 
                { 
                  {"CompilerVersion", "v2.0"} 
                };
    
                CSharpCodeProvider provider = new CSharpCodeProvider(providerOptions);
    
                String path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "test.exe");
    
                CompilerParameters compilerParams = new CompilerParameters { OutputAssembly = path,
                  GenerateExecutable = true };
                compilerParams.ReferencedAssemblies.Add("System.Windows.Forms.dll");
    
                // Компиляция 
                CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, hydraHead.source);
    
                // Выводим информацию об ошибках 
                MessageBox.Show("Number of Errors: " + results.Errors.Count);
    
                foreach (CompilerError err in results.Errors)
                {
                  MessageBox.Show("ERROR " + err.ErrorText);
                }

     Таким образом мы компилируем консольное приложение, а как изменить как ВинФорм?

     

    Friday, January 07, 2011 10:24 PM

Answers

All replies