![](/img/trans.png)
[英]How to force CSharpCodeProvider to compile for a specific target framework?
[英]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.