首页 新闻 会员 周边

C#动态编译问题

0
悬赏园豆:10 [已解决问题] 解决于 2008-12-04 16:44

我在使用.NET 3.5进行软件开发,在使用到动态编译的时候,以下两种方式实现都报提示CreateCompiler();已经过时,哪位大虾帮忙指导下现在该怎么样写这个功能???

CodeDomProvider _CodeDomProvider = CodeDomProvider.CreateProvider("CSharp"); ICodeCompiler _ICodeCompiler = _CodeDomProvider.CreateCompiler();

(CSharpCodeProvider _CSharpCodePrivoder = new CSharpCodeProvider();
ICodeCompiler _ICodeCompiler = _CSharpCodePrivoder.CreateCompiler();)

陈进原的主页 陈进原 | 初学一级 | 园豆:10
提问于:2008-12-02 17:09
< >
分享
最佳答案
0

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

eaglet | 专家六级 |园豆:17139 | 2008-12-03 06:55
其他回答(1)
0

提示过时的时候一般会有替代的方法,看一下!

GUO Xingwang | 园豆:3885 (老鸟四级) | 2008-12-02 17:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册