当前位置:  开发笔记 > 编程语言 > 正文

为CSharpCompilation.Emit指定框架版本

如何解决《为CSharpCompilation.Emit指定框架版本》经验,为你挑选了1个好方法。

有没有人知道在使用CSharpCompilation的extensionmethod Emit发射程序集时是否可以指定Framework-Version?

我们需要明确地定位4.5.1,否则我们会得到一个讨厌的运行时错误:

MissingMethodException
Method not found: '!!0[] System.Array.Empty()'.

或者我们是否必须等到客户升级到Framework 4.6才能使用Roslyn?



1> Kevin Pilch..:

编译器没有(并且从未)具有"框架版本"的概念.所有编译器都理解的是包含哪些引用集.听起来您正在使用对4.6版本框架的引用来创建编译(可能因为您正在使用正在运行的程序集位置,并且正在运行4.6).

相反,您需要确保安装了4.5.1目标包(VS安装会自动执行此操作,但其他计算机可能没有),并从中添加对您的编译的引用C:\Program Files (x86)\Reference Assemblies.

Array.Empty如果引用的程序集中存在引用,则编译器将发出引用,但如果不存在,则具有回退逻辑.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有