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