是否有可能在安装.NET时C#编译不可用?

时间:2013-01-14 13:43:19

标签: c# .net deployment compilation

This answer显示了如何在运行时使用CSharpCodeProvider类编译C#代码段。由于这是一项相当具体的任务,我不确定安装了.NET Framework的每个系统都具备此功能 - 可能需要额外安装。

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

6 个答案:

答案 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的答案)