我目前正在研究一个项目,其源代码应尽可能便携;也就是说,该项目(在C#中,但它不是非常相关)表示应该在Android(使用Mono-Android),iPhone(使用MonoTouch)和WinMobile(使用官方Compact Framework)上执行的应用程序。没有深入细节,相应的MSBuild解决方案由一个独立平台库(至少从源代码的角度来看)组成,它声明各种接口和类,这些接口和类表示每种功能的抽象,而不是各种平台所共有的即UI)。此外,还有一个相应的库(专门针对每个平台)“基础库”;有效的应用程序可执行文件是使用抽象和通用标准库的程序。多平台MSBuild项目文件
在WinMobile和Android上开发并不是一个真正的问题:Mono-Android外接程序可以安装在VS 2010上,所以两个平台都可以使用MS VS来处理。
最初该解决方案是在VS中创建的,因此初始配置和相关项目(Android和WinMobile)会自动生成。
之后,我将解决方案导入到Mac(MonoTouch正式支持的唯一平台)下的MonoDevelop中,并且为iPhone库创建了该项目;切换配置以生成程序集(iPhoneSimulator),“基础库”由于缺少项目类型配置而无法编译;具体来说,MonoTouch使用的<ProjectTypeGuids>
的GUID是{E613F3A2-FE9C-494F-B74E-F63BCB86FEA6}
;添加这个GUID我现在可以在MonoDevelop中编译“基础库”。
当我尝试在VS中重新导入解决方案时出现问题:由于没有Windows版本的MonoTouch,因此VS无法找到指定项目类型的加载项,并且项目无法加载。
看看MSBuild项目文件的规范,似乎有很多选项无法在VS中的项目/解决方案编辑器中设置或修改;但是格式非常复杂,现在我要求你的帮助!
是否有一种方法可以在项目文件中指定项目类型仅在独立选择某个特定配置的情况下存在于我正在使用的环境中?
我知道这已经很旧了,但我想指出,如果使用msbuild构建,这会失败。 'BuildingInsideVisualStudio'只会在从IDE本身构建时触发。这可能会在构建服务器上出现问题,例如直接从命令行运行msbuild。 – julealgon 2014-12-30 20:31:42