簡體   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