14
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");

如何编写此代码以消除此警告:

System.CodeDom.Compiler.CodeDomProvider.CreateCompiler()' is obsolete: '"调用者不应使用 ICodeCompiler 接口,而应直接使用 CodeDomProvider 类上的方法。从 CodeDomProvider 继承的那些仍必须实现此接口,并应排除此警告或废弃此方法。**

4

2 回答 2

10

请改用此方法

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

扩展:

if (CodeDomProvider.IsDefinedLanguage(language))
{
    CodeDomProvider provider = CodeDomProvider.CreateProvider(language);
    // ...
}
else
    Console.WriteLine("ERROR");
于 2013-01-18T19:23:26.853 回答
3
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");
于 2014-06-10T18:59:23.267 回答