2011-06-10 32 views
-4

我想從http://pastehtml.com/view/awono3xoq.txt下載代碼,將其保存爲一個字符串,然後編譯&運行當按鈕被點擊它,但我似乎無法得到下面的代碼工作:在C#中運行時編譯的問題?

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; 
using System.IO; 
using System.Diagnostics; 
using System.Net; 
using System.Runtime.InteropServices; 

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

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 
    public void compile() 
    { 
     CSharpCodeProvider myCodeProvider = new CSharpCodeProvider(); 
     ICodeCompiler myCodeCompiler = myCodeProvider.CreateCompiler(); 
     String [] referenceAssemblies = {"System.dll"}; 
     string myAssemblyName = "Assembly.exe"; 
     CompilerParameters myCompilerParameters = new CompilerParameters(referenceAssemblies, myAssemblyName); 
     myCompilerParameters.GenerateExecutable = true; 
     myCompilerParameters.GenerateInMemory = true; 
     WebClient x = new WebClient(); 
     Stream y = x.OpenRead("http://pastehtml.com/view/awono3xoq.txt"); 
     StreamReader z = new StreamReader(y); 
     string source = z.ReadToEnd(); 
     z.Close(); 
     y.Close(); 
     CompilerResults compres = myCodeCompiler.CompileAssemblyFromSource(myCompilerParameters, source); 
     Process.Start("Assembly.exe"); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     compile(); 
    } 
} 
} 

什麼我做錯了(除了有太多的使用說明:P)?

+0

您需要說*什麼*不起作用。你有錯誤嗎?如果是這樣,完全例外是什麼?如果它沒有達到你期望的效果,請說出它的行爲與你期望的不同。 – Gabe 2011-06-10 18:32:56

+0

是否有錯誤? – rerun 2011-06-10 18:33:10

+0

它編譯?你有任何錯誤?是否拋出異常? – Xint0 2011-06-10 18:33:21

回答

1

如果檢查CompilerResults compres它表明,有一個例外,編譯沒有成功,因此它不是寫出來Assembly.exe並且有來自Process.Start()

一個System.IO.FileNotFound例外試試這個

public void compile() 
{ 
    CSharpCodeProvider myCodeProvider = new CSharpCodeProvider(); 
    ICodeCompiler myCodeCompiler = myCodeProvider.CreateCompiler(); 
    string myAssemblyName = @"Assembly.exe"; 
    CompilerParameters myCompilerParameters = new CompilerParameters 
                { 
                 OutputAssembly = myAssemblyName, 
                 GenerateExecutable = true, 
                 GenerateInMemory = true 
                }; 
    myCompilerParameters.ReferencedAssemblies.Add("System.dll"); 
    WebClient x = new WebClient(); 
    Stream y = x.OpenRead("http://pastehtml.com/view/awono3xoq.txt"); 
    StreamReader z = new StreamReader(y); 
    string source = z.ReadToEnd(); 
    z.Close(); 
    y.Close(); 
    CompilerResults compres = myCodeCompiler.CompileAssemblyFromSource(myCompilerParameters, source); 
    Process.Start(myAssemblyName); 
} 
+0

嗯,這很奇怪... – MatthewSot 2011-06-10 18:44:12

+0

你會碰巧知道代碼中的問題? – MatthewSot 2011-06-10 18:45:42

+0

@IMAPC我正在調查它 – 2011-06-10 18:47:07