2011-02-06 26 views
-1

私は以下のコードを理解することができないので、コードの理解に誰も助けてくれます。コードの理解の問題

private bool Compile(string path) 
{ 
    bool result; 

    using (CSharpCodeProvider prov = new CSharpCodeProvider()) 
    { 
     CompilerParameters param = new CompilerParameters(); 

     string pathtoicon = ""; 
     if (File.Exists(Application.StartupPath + "\\icon.ico")) 
     { 
     pathtoicon = Application.StartupPath + "\\icon.ico"; 
     } 

     param.CompilerOptions = "/target:winexe" + " " + "/win32icon:" + "\"" + pathtoicon + "\""; 
     param.GenerateExecutable = true; 
     param.IncludeDebugInformation = false; 
     param.EmbeddedResources.Add(Environment.GetEnvironmentVariable("TEMP")+"\\points.dat"); 
     param.OutputAssembly = path; 
     param.GenerateInMemory = false; 

     param.ReferencedAssemblies.Add("System.dll"); 
     param.ReferencedAssemblies.Add("System.Data.dll"); 
     param.ReferencedAssemblies.Add("System.Deployment.dll"); 
     param.ReferencedAssemblies.Add("System.Drawing.dll"); 
     param.ReferencedAssemblies.Add("System.Windows.Forms.dll"); 
     param.ReferencedAssemblies.Add("System.Xml.dll"); 

     param.TreatWarningsAsErrors = false; 
     CompilerResults compresults = prov.CompileAssemblyFromSource(param, Properties.Resources.Program); 

     result = compresults.Errors.Count == 0; 

     File.Delete(Environment.GetEnvironmentVariable("TEMP") + "\\points.dat"); 
    } 

    return result; 
} 
+3

? – Anuraj

+0

param.CompilerOptions = "/ target:winexe" + "" + "/ win32icon:" + "\" "+ pathtoicon +" \ ""; param.GenerateExecutable = true; param.IncludeDebugInformation = false; param.EmbeddedResources.Add(Environment.GetEnvironmentVariable( "TEMP")+ "\\ points.dat"); param.OutputAssembly = path; param.GenerateInMemory = false; param.ReferencedAssemblies.Add( "System.dll"); この部分を理解するのを助けることができます.. – SurajRk

+0

コードは実際にアセンブリを作成しています。コンパイラのパラメータ/オプションの作成。 - 詳細はこちら - http://msdn.microsoft.com/en-us/library/system.codedom.compiler.compilerparameters.aspx – Anuraj

答えて

3

簡単に言えば、上記のコードは、.NETフレームワークで使用可能なコンパイラクラスを使用して新しい.NETアセンブリをコンパイルしています。

ここであなたを助けるかもしれないいくつかのドキュメントです:

あなたが理解できないコードの一部

CSharpCodeProvider

CompilerParameters