0

这个答案显示了如何CSharpCodeProvider在运行时使用类来编译 C# 代码片段。由于这是一项相当具体的任务,我不确定每个安装了 .NET Framework 的系统是否都具有此功能——也许必须安装一些额外的东西。

它的 C# 代码编译功能是否CSharpCodeProvider可以在任何安装了 .NET Framework 的系统上使用?

4

6 回答 6

2

根据CSharpeCodeProvider 类的 MSDN 文档,它在所有框架中都可用

提供对 C# 代码生成器和代码编译器实例的访问。

.NET Framework
支持:4.5、4、3.5、3.0、2.0、1.1、1.0

.NET Framework 客户端配置文件
受以下版本支持:4、3.5 SP1

于 2013-01-14T13:48:34.997 回答
2

之前的所有答案都是正确的,但是我在没有安装 .NET SDK/Visual Studio 的 VM 上进行了测试。它是一个普通的 2003 服务器,带有 .NET 4 Client Profile + .NET 4 Extended Framework。

结果是在这个设置中 CSharpCodeProvider 工作得很好!

如果您想进一步保护自己,可以通过以下调用检查特定代码提供程序的可用性:

   CodeDomProvider.IsDefinedLanguage("CSharp")

这种方法的文档说:

机器配置文件 (Machine.config) 中的元素包含计算机上每个 CodeDomProvider 实现的语言提供程序和编译器配置设置。IsDefinedLanguage 方法在提供程序配置元素中搜索指定的语言名称。

因此,可以在 CodeProvider 无法工作的计算机上运行您的程序(可能是一些偏执的系统管理员想要禁用动态代码编译(尽管它没有意义,因为使用 CodeDomProvider 无论如何都需要完全信任))。

于 2013-01-14T14:02:33.653 回答
1

来自CSharpCodeProvider 文档

版本信息 .NET Framework 支持:

4.5、4、3.5、3.0、2.0、1.1、1.0

.NET Framework 客户端配置文件支持:

4、3.5 SP1

于 2013-01-14T13:48:53.877 回答
1

AFAIKCSharpCodeProvider只是 .NET 的包装器csc.exe,而.NETcsc.exe的每个桌面版本都提供了 .NET(例如,Silverlight 上不提供)。

于 2013-01-14T13:49:01.473 回答
0

除了其他答案之外,似乎语言规范实际上与这个程序集相关,所以我相信答案是“是”。

请参阅:动态(C# 参考)(基于https://stackoverflow.com/a/2460934/211627的答案)

于 2013-01-14T13:52:52.643 回答
0

http://msdn.microsoft.com/en-us/library/microsoft.csharp.csharpcodeprovider%28v=vs.71%29.aspx

第一次点击谷歌。点击“其他版本”

它提供了此类(以及因此此功能)可用的版本列表。

似乎这个类从 1.1 版开始可用,我想说这可能是每个版本,因为甚至 Object 类都回到了那个版本。

于 2013-01-14T13:48:21.647 回答