C#的小白抛计,查閱網上資料也是不怎么全今艺,特此記錄巨双;
【參考文檔】
- 官方文檔 https://ardupilot.org/dev/docs/building-mission-planner.html#building-mission-planner
- MissionPlanner編譯與修改方法 http://www.nufeichuiyun.com/?p=76
- 采用 Visual Studio 編譯 Mission Planner 方法與問題總結https://blog.csdn.net/hailiannanhai/article/details/78171546
源碼下載地址:https://github.com/ArduPilot/MissionPlanner
Mission Planner上位機軟件:http://firmware.ardupilot.org/Tools/MissionPlanner/MissionPlanner-latest.msi
編譯環(huán)境:win10 + visual studio 2019
vs安裝需要的庫
- “ASP.NET and web development”
- “Universal Windows Platform developement”
- “Mobile development with .NET”
- “.NET Core cross-platofrm developement”
- “.NET desktop development”
1势决、預先安裝最新的Mission Planner軟件蒿囤,需用到一些依賴的動態(tài)庫
2贾富、“文件” -> “打開” -> “項目/解決方案” 歉眷,選擇剛下載的文件夾下的“MissionPlanner.sln”
3、右鍵點擊 Mission Planner工程(注意前面有C#圖標的工程)颤枪,點擊【屬性】汗捡、選擇【引用路徑】、將已經安裝的Mission Planner路徑填進去汇鞭,點擊添加文件夾凉唐;
點擊上圖中的【生成事件】庸追,移除所有“預先生成事件命令行“和”后期生成事件命令行“的內容;點擊上圖中的【生成】台囱,將配置改為”Active(Debug)”
4淡溯、刪除項目中 的 <ProjectReference Include="..\mono\mcs\class\System.Windows.Forms\System.Windows.Forms-net_4_x.csproj" Condition="'$(TargetFramework)' == 'netstandard2.0'" />
5、刪除MissionPlanner\ExtLibs\AltitudeAngelWings.csproj中<TargetFrameworks>net461;netcoreapp3.1;netstandard2.0</TargetFrameworks>的netstandard2.0因為很多命名空間中不存在對應的類型簿训;
同理還有以下項目中的netstandard2.0
- BSE.Windows.Forms.csproj
- BaseClasses.csproj
- GMap.Net.WindowsForms.csproj
- OSDConfigurator.csproj
- ZedGraph.csproj
- MissionPlanner.Controls.csproj
6咱娶、如果遇到命名空間 system.windows 中不存在類型或命名空間名稱 forms (是否缺少程序集引用 )”錯誤,則右鍵項目 --->添加-->程序集引用
執(zhí)行以上操作后强品,清理項目再重新生成膘侮,如果還有錯,則點擊錯誤提示進入對應的cs文件的榛,等幾秒后錯誤就消失了(具體原因未知)
7琼了、刪除Updater項目的生成后執(zhí)行命令行,以解決簽名錯誤的問題夫晌;
8雕薪、解決錯誤:vs使用簡體中文(gb2312)編碼加載文件;解決方案:UTF-8編碼打開文件
參考https://blog.csdn.net/qq_42974800/article/details/94590512
9晓淀、解決錯誤: 非字符串資源要求在運行時使用 System.Resources.Extensions 程序集所袁,但未在此項目的引用中找到它。
工具-》Nuget包管理工具-》管理解決方案的Nuget程序包凶掰,在已安裝里搜索System.Resources.Extensions,
如果已安裝燥爷,則更新MissionPlanner.Controls的依賴版本;
沒安裝的話懦窘,打開程序包管理控制臺輸入:
Install-Package System.Resources.Extensions -Version 4.6.0
進行安裝前翎,再同上更新版本;
此處更新一下奶赠,需要用4.6.0的版本鱼填,不然后續(xù)運行會報錯 A Major error has occured: 未能加載文件或程序集“System.Resources.Extensions Version=4.0.0.0”(雖然也不是很確定是不是這個的問題,不過折騰很久毅戈,最后這里的版本改了就好了苹丸。。苇经。)
具體錯誤如下:
10赘理、配置安卓SDK
點擊錯誤提示自動下載更新sdk28(安卓9.0),安裝完畢后扇单,進入UsbSerialForAndroid項目商模,右鍵,屬性,更改目標框架為Android 9.0施流;
11响疚、解決錯誤:ConcurrentDictionary<int, uavcan.uavcan_protocol_NodeStatus>”未包含“Remove”的定義,并且找不到可接受第一個“ConcurrentDictionary<int, uavcan.uavcan_protocol_NodeStatus>”類型參數(shù)的可訪問擴展方法“Remove”(是否缺少 using 指令或程序集引用?) UAVCANFlasher
點擊對應的錯誤說明瞪醋,進入文件后做如下修改:
uavcan.uavcan_protocol_NodeStatus value;
can.NodeList.TryRemove(lastseenDateTime.Key, out value)忿晕;
// can.NodeList.Remove(lastseenDateTime.Key)