繁体   English   中英

如何强制 CSharpCodeProvider 使用特定的目标框架进行编译

[英]How to force CSharpCodeProvider to compile with a specific target framework

我有一个小应用程序,它可以使用 CSharpCodeProvider 编译 .cs 脚本它多年来一直运行良好。 现在我尝试了一个新脚本,但遇到了编译问题。 我追踪到使用具有 5 个参数的 Func 委托。 我知道,有一个带有 .NET Framework 4.0 的开关,允许超过 4 个参数。

是的,我试图强制使用所需的编译器版本:

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

但这无济于事。 每当我添加 Func 参数 #5 时,脚本都不会编译,这使我得出结论,它以某种方式使用了旧编译器。

任何想法如何解决这一问题?

我在 Stackoverflow 上搜索过类似的问题,但没有找到任何有用的答案。 Roslyn 的使用不是替代方案,因为它包含很多依赖项,我想在这个小脚本应用程序中避免这些依赖项。

这是一个问题的示例,周五下午无法解决,但周一早上很容易解决。

我发现,我的新 VisualStudio 2022 在更新解决方案时,不知何故并没有接管应用程序的旧 OutputPath。 所以我有了一个新脚本,但仍然是一个使用 v3.5 编译器的旧应用程序。

意味着 CompilerVersion 设置按预期工作。

带来不便敬请谅解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM