MissionPlanner编译流程及问题详解
一,介绍
MissionPlanner是一款基于C#开发的开源的地面站软件,主要用在Windows/Linux平台。MP使用广泛,提供了较为完善的功能,如飞行器设置,飞行任务规划,飞行监控和日志文件分析。开源的特性使得我们能够进行二次开发。对于初学者而言,不建议直接进行二次开发,你需要至少了解使用过MP。笔者在多次编译失败及查阅大量资料后终于成功了,所以记录下遇到的问题和解决方法。
二次开发需要的基本技能:
- C#编程技巧和经验(至少或C++经验)。
- 有Microsoft Visual Studio(VS)开发环境方面的经验。MP不是开始学习VS的应用程序。
- 使用Windows API(应用程序编程接口)的经验-包括理解流、进程和线程。
二,下载
环境:win10+VS2019+MissionPlanner1.3.75
1.VS2019社区版:https://visualstudio.microsoft.com/zh-hans/downloads/
官方建议安装如下组件:
- “.NET desktop development”
- “ASP.NET and web development”
- “Universal Windows Platform developement”
- “Mobile development with .NET”
- “.NET Core cross-platform developement”
![组件1](https://img-blog.csdnimg.cn/eb1b07a68e464623a29bc31da5173c88.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAU2hhcmtfUGVwcGVy,size_15,color_FFFFFF,t_70,g_se,x_16)
![组件2](https://img-blog.csdnimg.cn/2808cdfcc09643c5871183edcef012c7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAU2hhcmtfUGVwcGVy,size_15,color_FFFFFF,t_70,g_se,x_16)
2.Mission Planner源码地址为:https://github.com/ArduPilot/MissionPlanner
最好下载稳定版本,最新的代码编译可能会出现一些不可预测的问题,笔者下载的是MissionPlanner1.3.75
![MissionPlanner1.3.75](https://img-blog.csdnimg.cn/77db99ef03ce4e9cb7f54b0700dc6781.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAU2hhcmtfUGVwcGVy,size_15,color_FFFFFF,t_70,g_se,x_16)
3.最好下载与代码版本一致的Mission Planner软件,因为代码需要引用一些文件,而GitHub无法上传这些文件,如动态链接库(dll)等,这会解决很多引用的问题。
下载链接为:http://firmware.ardupilot.org/Tools/MissionPlanner/
注意最好选择安装版,解压版可能会出现引用失效的问题。
![MP上位机](https://img-blog.csdnimg.cn/50cf01ac851e46d7bd108a39d21a1775.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAU2hhcmtfUGVwcGVy,size_15,color_FFFFFF,t_70,g_se,x_16)
三,代码编译
打开MissionPlanner.sln
![MissionPlanner.sln](https://img-blog.csdnimg.cn/9e34000959c34d25baa0bfb1456e7795.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAU2hhcmtfUGVwcGVy,size_15,color_FFFFFF,t_70,g_se,x_16)
注意打开之后可能会出现很多错误,先不用在意。
添加引用路径,即MP软件安装的路径。
![引用路径](https://img-blog.csdnimg.cn/863f658d93124ab28b855f6a39a448be.png)
其他问题
1.找不到Serialization.Formatters.Soap-net_4_x.csproj”的项目信息。如果使用 Visual Studio,这可能是因为该项目已被卸载或不属于当前解决方案,因此请从命令行运行还原。否则,项目文件可能无效或缺少还原所需的目标
解决方法:
打开 Nuget包管理器 -> 程序包管理器控制台
dotnet restore MissionPlanner.sln
严重性 | 代码 | 说明 | 项目 | 文件 | 行 | 禁止显示状态 |
---|
错误 | CS0006 | 未能找到元数据文件“C:\Users\adhoc\Desktop\MissionPlanner1.3.73\ExtLibs\MissionPlanner.Drawing.Common\bin\Debug\netstandard2.0\System.Drawing.Common.dll” | GMap.NET.Drawing (net461) | C:\Users\adhoc\Desktop\MissionPlanner1.3.73\ExtLibs\GMap.NET.Drawing\CSC | 1 | 活动 |
解决方法:
(1)添加引用路径
(2)将里面没有的文件自己添加到出错的文件下面
严重性 | 代码 | 说明 | 项目 | 文件 | 行 | 禁止显示状态 |
---|
错误 | CS0006 | 未能找到元数据文件“C:\Users\adhoc\Desktop\MissionPlanner1.3.73\ExtLibs\mono\mcs\class\lib\net_4_x-win32\netstandard2.0\Accessibility.dll” | BSE.Windows.Forms (net461) | C:\Users\adhoc\Desktop\MissionPlanner1.3.73\ExtLibs\BSE.Windows.Forms\CSC | 1 | 活动 |
解决方法:
如果代码下载的是.ZIP
格式,则其中“\ExtLibs\mono\
”文件夹下为空,需要下载mono并将其内容拷贝到“\ExtLibs\mono\
”文件夹下
如果是用git下载的,则需要更新子模块:git submodule update –init –recursive
4.NETSDK1045:当前的 .NET SDK 不支持将“更新的版本”作为目标。
![1045](https://img-blog.csdnimg.cn/13de92bda8594f219c2533ac3d28fbed.png)
当生成工具找不到生成项目所需的 .NET SDK 版本时,会发生此错误。 这通常是由于 .NET Core SDK 安装或配置问题导致的。可以使用如下命令查看已安装的版本。
![.NET版本](https://img-blog.csdnimg.cn/f6d91a7450794948abd8de873df7bfd6.png)
解决办法:打开项目文件(.csproj、.vbproj 或 .fsproj),并检查目标框架。 这是应用尝试使用的框架版本。改为net5.0即可。
<TargetFramework>netXXX3.0</TargetFramework>
![框架版本](https://img-blog.csdnimg.cn/b06adcd619c34ae3b97691bc7cc09e59.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAU2hhcmtfUGVwcGVy,size_13,color_FFFFFF,t_70,g_se,x_16)
5.“仅我的代码”警告
解决办法:在VS中 【调试】->【选项】->【勾选 启用“仅我的代码”】 (去掉勾选);
![仅我的代码警告](https://img-blog.csdnimg.cn/ab0dc799bb0942a18d7f6c48036a98d5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAU2hhcmtfUGVwcGVy,size_15,color_FFFFFF,t_70,g_se,x_16)
至此成功编译,运行界面如下所示:
![编译成功](https://img-blog.csdnimg.cn/eeb889d7c38c4f58b51c4bb5193871ad.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAU2hhcmtfUGVwcGVy,size_15,color_FFFFFF,t_70,g_se,x_16)
参考内容
- Building Mission Planner with Visual Studio
- Mission Planner编译方法与问题解决
- 建立MissionPlanner的Visual Studio开发环境
- Mission planner1.3.70环境搭建及编译
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)