我在使用.NET 3.5进行软件开发,在使用到动态编译的时候,以下两种方式实现都报提示CreateCompiler();已经过时,哪位大虾帮忙指导下现在该怎么样写这个功能???
CodeDomProvider _CodeDomProvider = CodeDomProvider.CreateProvider("CSharp"); ICodeCompiler _ICodeCompiler = _CodeDomProvider.CreateCompiler();
(CSharpCodeProvider _CSharpCodePrivoder = new CSharpCodeProvider();
ICodeCompiler _ICodeCompiler = _CSharpCodePrivoder.CreateCompiler();)
CodeDomProvider 和 CSharpCodeProvider 这两个类在 .Net 2.0 中已经实现了ICodeCompiler 接口中的函数,所以不需要用 CreateCompiler() ,只需要直接用 CodeDomProvider 和 CSharpCodeProvider 的实例就可以了。
如 _ICodeCompiler.CompileAssemblyFromFile("xxx")
可以写成 _CodeDomProvider.CompileAssemblyFromFile("xxx")
下面是 MSDN 上的建议:
This method is obsolete in the .NET Framework version 2.0. The recommended alternative is to call the ICodeCompiler methods that are directly available in the code provider.
意思就是说 ICodeCompiler 的函数在 code provider 中已经直接有效了。
下面是 一个论坛上类似的问题
http://bytes.com/groups/net-c/722688-codedomprovider-createcompiler-obsolete-fix
提示过时的时候一般会有替代的方法,看一下!