2

私は、cproj ファイルを変更せずに、MonoTouch プロジェクトを Visual Studio 2010 でビルドする方法に取り組んでいます。私はほとんどそこにいますが、最後のステップは、MonoTouch プロジェクトでアクション「ページ」をビルドする *.xib ファイルです。

Visual Studio 2010 のビルド アクション ページは XAML コンパイラを呼び出すため、VS2010 でプロジェクトをビルドするには、ビルド アクションを [なし] に設定する必要があります。これを行う際の問題は、.cproj ファイルが変更されていることです。MonoTouch でビルドする前に、.cproj ファイルを Page に戻す必要があります。

だから私の質問はこのようなものです。Visual Studio 拡張モデルを使用して、特定のファイル タイプを「インターセプト」して「無視」したり、ビルド タイプを変更したりすることはできますか? それとも、Visual Studio は msbuild を使用してすべてをビルドしているので、実際に .cproj ファイルに書き込まれていることだけを気にしていますか?

4

1 に答える 1

2

私は少し異なる戦略を使用してこの問題を解決することになりました。DTEオブジェクトでさまざまなビルドイベントをリッスンし、ビルドの前後にVisualStudio2010拡張機能でコードを実行できます。

_dte.Events.BuildEvents.OnBuildBegin += MakeXibsNone;
_dte.Events.BuildEvents.OnBuildDone += MakeXibsPage;

この戦略を使用して、ビルド前にビルドアクションをNoneに変更し、ビルド後にページに戻ることができます。ビルドタイプを変更するコードは、ソリューション内のすべてのプロジェクトと、プロジェクト内のすべてのプロジェクトアイテムを列挙するだけです。拡張子が.xibのすべてのファイルを検索し、次のコードを使用してビルドアクションを変更します。

xib.Properties.Item("ItemType").Value = "Page";
xib.Properties.Item("ItemType").Value = "None";

完全な実装はhttps://github.com/follesoe/VSMonoTouch/blob/master/VSMonoTouch/VSMonoTouchPackage.csにあります。

于 2011-05-15T18:09:41.117 に答える