![](/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.