私は現在、ソースコードを可能な限り移植可能にするプロジェクトに取り組んでいます。つまり、プロジェクト (C# ですが、あまり関係ありません) は、Android (Mono-Android を使用)、iPhone (MonoTouch を使用)、および WinMobile (公式の Compact Framework を使用) で実行する必要があるアプリケーションを表します。詳細は省きますが、対応する MSBuild ソリューションは、(少なくともソース コードの観点からは) 独立したプラットフォーム ライブラリで構成されており、さまざまなプラットフォームに共通ではない各機能の抽象化を表すさまざまなインターフェイスとクラスを宣言しています (つまり、UI)。さらに、「基本ライブラリ」を (プラットフォームごとに) 特化した対応ライブラリがあります。効果的なアプリケーション実行可能ファイルは、抽象化と共通の標準ライブラリを使用するプログラムです。
WinMobile と Android での開発は実際には問題ではありません。Mono-Android アドインは VS 2010 にインストールできるため、両方のプラットフォームを MS VS で処理できます。
最初にソリューションは VS で作成されたため、初期構成と関連プロジェクト (Android および WinMobile) が自動的に生成されます。
その後、Mac (MonoTouch で公式にサポートされている唯一のプラットフォーム) の MonoDevelop にソリューションをインポートし、iPhone ライブラリのプロジェクトを作成しました。構成を切り替えてアセンブリ (iPhoneSimulator) を生成すると、プロジェクト タイプの構成が欠落しているため、「ベース ライブラリ」をコンパイルできませんでした。具体的には、MonoTouch で使用される GUID は次のとおり<ProjectTypeGuids>
です{E613F3A2-FE9C-494F-B74E-F63BCB86FEA6}
。この GUID を追加すると、MonoDevelop で「基本ライブラリ」をコンパイルできるようになります。
VS でソリューションを再インポートしようとすると、問題が発生します。MonoTouch の Windows バージョンがないため、VS は指定されたプロジェクト タイプのアドインを見つけることができず、プロジェクトは読み込まれません。
MSBuild プロジェクト ファイルの仕様を見ると、VS のプロジェクト/ソリューション エディター内で設定または変更できないオプションがたくさんあるようです。しかし、フォーマットは非常に複雑で、今私はあなたの助けを求めています!
使用している環境に対して特定の構成が個別に選択されている場合にのみ、プロジェクト タイプが存在することをプロジェクト ファイルで指定する方法はありますか?