2013-01-18 21 views
9
CSharpCodeProvider codeProvider = new CSharpCodeProvider(); 
ICodeCompiler MyCompiler = codeProvider.CreateCompiler(); 
CompilerParameters myParameters = new CompilerParameters(); 
myParameters.GenerateExecutable = true; 
myParameters.OutputAssembly = @"prog.exe"; 
myParameters.TreatWarningsAsErrors = false; 
CompilerResults results = myCompiler.CompileAssemblyFromFile(myParameters,"prog.txt"); 

我怎麼能寫這樣的代碼,以消除此警告:CodeDomProvider.CreateCompiler()是過時

System.CodeDom.Compiler.CodeDomProvider.CreateCompiler() '已過時:'「主叫方不應該使用ICodeCompiler接口,而應直接使用的CodeDomProvider類的方法。那些來自CodeDomProvider繼承仍然必須實現此接口,並且應該排除這種警告或也過時了這種方法。**

回答

7

使用this method改爲:

CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp"); 

擴展:

if (CodeDomProvider.IsDefinedLanguage(language)) 
{ 
    CodeDomProvider provider = CodeDomProvider.CreateProvider(language); 
    // ... 
} 
else 
    Console.WriteLine("ERROR"); 
-1
CSharpCodeProvider codeProvider = new CSharpCodeProvider(); 
CompilerParameters myParameters = new CompilerParameters(); 
myParameters.GenerateExecutable = true; 
myParameters.OutputAssembly = @"prog.exe"; 
myParameters.TreatWarningsAsErrors = false; 
CompilerResults results = codeProvider.CompileAssemblyFromFile(myParameters, "prog.txt"); 
+4

請加解釋,而不只是代碼。 –