gpt4 book ai didi

c# - 为 CSharpCompilation.Emit 指定框架版本

转载 作者:太空狗 更新时间:2023-10-30 00:30:38 25 4
gpt4 key购买 nike

有谁知道在使用 CSharpCompilation 的扩展方法 Emit 发出程序集时是否可以指定框架版本?

我们显然需要以 4.5.1 为目标,否则我们会遇到严重的运行时错误:

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

还是我们必须等到客户端升级到 Framework 4.6 才能使用 Roslyn?

最佳答案

编译器没有(也从来没有)有“框架版本”的概念。编译器只知道包含了哪些引用集。听起来您正在引用 4.6 版本的框架创建编译(可能是因为您正在使用运行的程序集位置,并且正在 4.6 上运行)。

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

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

关于c# - 为 CSharpCompilation.Emit 指定框架版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34262635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com