我目前正在开发一个源代码应该尽可能可移植的项目;也就是说,该项目(在 C# 中,但不是很相关)表示应该在 Android(使用 Mono-Android)、iPhone(使用 MonoTouch)和 WinMobile(使用官方 Compact Framework)上执行的应用程序。无需赘述,相应的 MSBuild 解决方案包含一个独立平台库(至少从源代码的角度来看),它声明了各种接口和类,这些接口和类代表了各个平台不通用的每个特性的抽象(即用户界面)。此外,还有一个相应的库,专门(针对每个平台)“基础库”;有效的应用程序可执行文件是使用抽象和通用标准库的程序。
在 WinMobile 和 Android 上开发不是问题:在 VS 2010 上可以安装 Mono-Android 插件,因此这两个平台都可以用 MS VS 处理。
最初解决方案是在 VS 中创建的,因此会自动生成初始配置和相关项目(Android 和 WinMobile)。
之后,我在 Mac(MonoTouch 官方支持的唯一平台)下的 MonoDevelop 中导入了解决方案,并为 iPhone 库创建了项目;切换配置以生成程序集(iPhoneSimulator),由于缺少项目类型配置,无法编译“基础库”;具体来说,MonoTouch 使用的 GUID<ProjectTypeGuids>
是{E613F3A2-FE9C-494F-B74E-F63BCB86FEA6}
; 添加此 GUID 我现在可以在 MonoDevelop 中编译“基础库”。
当我尝试在VS中重新导入解决方案时出现问题:由于没有Windows版本的MonoTouch,VS无法找到指定项目类型的插件,并且项目无法加载。
查看 MSBuild 项目文件的规范,似乎有很多选项无法在 VS 的项目/解决方案编辑器中设置或修改;但是格式非常复杂,现在我请求您的帮助!
有没有办法在项目文件中指定项目类型仅在我使用的环境独立选择特定配置时才存在?