Mac版Rider載入、編譯.Net失敗,Unity外掛安裝失敗問題
前言
本文記錄了mac上解決Rider載入、編譯.Net專案失敗的問題, 以及Rider的Unity外掛安裝失敗,導致Rider中無法正確載入Unity solution,無程式碼提示問題。
總結
出現的問題及原因
- 1). 提示MSBuild無法正確載入 Console Application
cannot load project and obtain project information from msbuild.
this project template is incompatible with the current msbuild
解決: 安裝了dotnet sdk,重啟Rider , 設定(Build, Execution, Deployment –> Toolset and Build)中MSBuild會被自動設定為新安裝的dotnet sdk裡面的MSBuild,此時可以在Rider中成功新建、執行 .Net Core型別的 Console Application
- 2). 上面只是解決了使用Rider無法建立 .Net Core Console Application的問題,其實 此時,使用 Rider 開啟 Unity 的 sln 檔案,會一直在 loading project, 無法自動安裝 Rider 的 Unity 外掛(成功安裝的話,會在 Unity 工程的 Assets/plugins/Editor/JetBrains 目錄下看到 JetBrains Rider 的外掛 JetBrains.Rider.Unity.Editor.Plugin.Repacked.dll)
解決: 一番搜尋之後,定位到問題應該是MSBuild版本或者Mono Framework的版本問題,導致載入 Unity 專案失敗 並且無法安裝外掛。觀察Rider的設定中(Build, Execution, Deployment –> Toolset and Build) Mono 可執行路徑為 /Library/Frameworks/Mono.framework/Versions/Current/bin/mono 看到Mono.framework 是裝在 /Library/Frameworks/ 下, 我解除安裝unity 和 MonoDevelop 都不會 刪掉它,看檔案建立日期也是很久以前,這個 Mono.framework 應該是在第一次安裝unity的時候裝上的, 這裡是個坑,我手動幹掉了 Mono.Framework, 然後到 Mono 官網下了最新的
結論
1) 更新升級Unity並不會自動更新 /Library/Frameworks/下的 Mono.Framework,記得跟進 Mono.framework 版本是否需要更新,建議更新 Mono Framework 到最新的穩定版
2) 在 Rider 的構建設定中(Build, Execution, Deployment –> Toolset and Build), 讓Mono executable path 和 Use MSBuild version 兩個地方的Mono路徑一致,例如都在 /Library/Frameworks/Mono.Framework/的子目錄下,以保證使用的工具鏈是同一套、同一個版本的Mono.framework.
作者水平有限,對相關知識的理解和總結難免有錯誤,還望給予指正,非常感謝!