首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何关闭CSharpCodeProvider上的.NET 4.5功能?

如何关闭CSharpCodeProvider上的.NET 4.5功能?
EN

Stack Overflow用户
提问于 2017-11-13 22:18:17
回答 2查看 227关注 0票数 0

我正在使用CSharpCodeProvider编译程序集。当用户使用.NET框架4.0以上版本的功能和类时,我想得到错误。

例如,如果在安装了4.5版.NET框架的机器上运行此代码,CSharpCodeProvider将使用.NET 4.5 API(例如System.Reflection.ReflectionContext)成功编译。

代码语言:javascript
复制
var options = new Dictionary<string, string> { { "CompilerVersion", "v4.0" } };
var cs = new CSharpCodeProvider(options);
var compilerParams = new CompilerParameters();
var r = cs.CompileAssemblyFromSource(
    compilerParams,
    "namespace Sample {public class SampleClass{private System.Reflection.ReflectionContext a;}}");

谁知道我如何指定使用唯一的4.0版本进行编译吗?

EN

回答 2

Stack Overflow用户

发布于 2017-11-14 16:06:52

专门针对.NET 4.0框架形状的方法是执行MSBuild在默认情况下解析.NET 4.0项目中的程序集引用时所做的操作,以Windows SDK (由VS安装)部署的引用程序集为目标。安装到C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0的引用程序集表示.NET 4.0的框架二进制文件的公共外围应用程序-引用这些二进制文件将使您的应用程序面向仅安装了.NET 4.0的系统上可用的.NET 4.5的子集。

https://connect.microsoft.com/VisualStudio/feedback/details/783278/compilerversion-is-not-being-taken-into-account-v4-0-in-a-machine-with-net-4-5-installed

票数 1
EN

Stack Overflow用户

发布于 2017-11-13 22:22:39

我认为您必须使用/nostdlib选项链接另一个mscorlib.dll。

代码语言:javascript
复制
List<String> references = new List<string>();

String mscorlib = Path.Combine(              
    Environment.GetFolderPath(Environment.SpecialFolder.Windows),
    @"Microsoft.NET\Framework\v4.0.30319\mscorlib.dll"
);

references.Add(mscorlib);
// Add other references...

var provider = new CSharpCodeProvider(new Dictionary<String,String> {{"CompilerVersion", "v4.0"}});

var parameters = new CompilerParameters(references.ToArray(), "MyApp.exe");
parameters.GenerateExecutable = true;
parameters.CompilerOptions = "/nostdlib";              

var results = provider.CompileAssemblyFromSource(parameters,
    @"using System;

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(""CLR Version: "" + Environment.Version);
        }
    }");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47266434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档