This answer显示了如何在运行时使用CSharpCodeProvider
类编译C#代码段。由于这是一项相当具体的任务,我不确定安装了.NET Framework的每个系统都具备此功能 - 可能需要额外安装。
CSharpCodeProvider
是否在安装了.NET Framework的任何系统上都可以使用其C#代码编译功能?
答案 0 :(得分:2)
根据CSharpeCodeProvider Class的MSDN文档,它在所有框架中都可用
提供对C#代码生成器和代码编译器实例的访问。
.NET Framework
受以下支持:4.5,4,3.5,3.0,2.0,1.1,1.0.NET Framework客户端配置文件
受以下支持:4,3.5 SP1
答案 1 :(得分:2)
之前的所有答案都是正确的,但我在没有安装.NET SDK / Visual Studio的VM上进行了测试。它是一个普通的2003服务器,具有.NET 4 Client Profile + .NET 4 Extended Framework。
结果就是在这个设置中CSharpCodeProvider工作得很好!
如果您想进一步保护自己,可以通过以下呼叫检查具体的代码提供商可用性:
CodeDomProvider.IsDefinedLanguage("CSharp")
documentation for this method说:
机器配置文件中的元素 (Machine.config)包含语言提供程序和编译器 每个CodeDomProvider实现的配置设置 电脑。 IsDefinedLanguage方法搜索提供程序 指定语言名称的配置元素。
因此,可以在CodeProvider无法运行的计算机上运行您的程序(可能是一些偏执的系统管理员想要禁用动态代码编译(尽管它没有意义,因为使用CodeDomProvider需要完全信任)。
答案 2 :(得分:1)
来自CSharpCodeProvider documentation:
版本信息.NET Framework受以下版本支持:
4.5,4,3.5,3.0,2.0,1.1,1.0
支持的.NET Framework客户端配置文件:
4,3.5 SP1
答案 3 :(得分:1)
AFAIK,CSharpCodeProvider
只是csc.exe
的包装,反过来,csc.exe
可用于每个桌面版本的.NET(例如,它不适用于Silverlight)。
答案 4 :(得分:0)
http://msdn.microsoft.com/en-us/library/microsoft.csharp.csharpcodeprovider%28v=vs.71%29.aspx
首先打击谷歌。 点击“其他版本”它提供了此类(以及此功能)可用的版本列表。
看来这个类已经从1.1版开始提供了,我想这可能就是每个版本,因为甚至Object类都会回到那个版本。
答案 5 :(得分:0)
除了其他答案之外,看起来语言规范实际上与这个程序集有关,所以我相信答案是“是”。
请参阅:dynamic (C# Reference)(基于https://stackoverflow.com/a/2460934/211627的答案)