2013-04-14 9 views
0

Я создал форму для компилятора codeDOM, и он может скомпилировать мой код, если он находится в одном текстовом файле, но я хочу иметь возможность компилировать исходный код в текстовом файле и класс, который находится в текстовом файле, чтобы они могли работать вместе.Использование CodeDOM для исходного кода и файла класса togther

Я не уверен, как код CodeDOM, чтобы добавить свой файл класса в качестве ресурса для основного источника компилироваться

Вот что я до сих пор

CodeDOM Компилятор

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.CodeDom.Compiler; 
using Microsoft.CSharp; 


namespace CodeDOMSourceTest 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 

     private void btnCompile_Click(object sender, EventArgs e) 
     { 
      CompilerParameters Params = new CompilerParameters(); 
      Params.GenerateExecutable = true; 
      Params.ReferencedAssemblies.Add("System.dll"); 
      Params.ReferencedAssemblies.Add("TextFile1.txt"); 

      Params.OutputAssembly = "output.exe"; 

      string Source = Properties.Resources.CodeDOMSource; 
      Source = Source.Replace("[TEXT]", txtReplace.Text); 

      CompilerResults Results = new CSharpCodeProvider().CompileAssemblyFromSource(Params, Source); 

      if (Results.Errors.Count > 0) 
      { 
       foreach (CompilerError err in Results.Errors) 
        Console.WriteLine(err.ToString()); 
      } 
      else Console.WriteLine("Compiled just fine!"); 
     } 
    } 
} 

Источник файл

namespace testingCodeDOM 
{ 
class Program 
{ 
static void Main() 
{ 
System.Console.WriteLine("[TEXT]"); 
Console.WriteLine(Testing.textwork()); 
System.Console.Read(); 
} 
} 
} 

ClassFile

namespace testingCodeDOM 
{ 
    class Testing 
    { 
     public static string textwork() 
     { 
      string hello = "calss worked"; 
      return hello; 
     }enter code here 
    } 
} 

Любые идеи, как сделать это, потому что я гугле ему утра не получая были или, по крайней мере, я ничего не понимаю

на стороне это не работает с только источником, но я пытаюсь адаптироваться он также должен использовать файлы классов

+1

Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

0

The CompileAssemblyFromSource() method может принимать любое количество строк исходного кода (поскольку это метод params). Таким образом, вы можете назвать это что-то вроде:

CompileAssemblyFromSource(Params, Source, ClassFile) 

Где ClassFile является string, который содержит текст второго файла.

+0

спасибо, что это сработало! : D невозможно поставить «систему использования»; в верхней части текстового файла вместо этого в «Params», потому что я намерен использовать его в своей другой программе и который использует множество ссылок –