パーティーに少し遅れましたが、ここに私の考えがあります。
私は、既存のコードベースを変更するようなものは何も伴わない3番目の可能性に行きます。これは、たとえばビルド後のスクリプトを使用して、出力ディレクトリのどこかにバイナリ(コンパイルからの実際のゲーム.exeおよび関連する.dll)をコミット(およびコピー)する場合に機能します。以降、Visual Studio 2010とXNA Game Studio 4.0について話していると仮定します(手順は他のバージョンでも非常によく似ています。いくつかの数字を置き換えるだけです)
そのため、次の手順で、.slnソリューションが存在するプロジェクトのルートにスクリプト(.cmd)を作成します。
「Visual Studio 2010コマンドプロンプト」を呼び出します。
「C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ vcvarsall.bat」x86を呼び出します
これは、スクリプトがXNAライブラリ、および必要なすべてのツールとバイナリを見つけることができるようにするためです。
コンテンツプロジェクト(.contentproj)でMSBuildタスクを呼び出します。
msbuild / property:XNAContentPipelineTargetPlatform = Windows / property:XNAContentPipelineTargetProfile = Reach mygame.content / projectfile.contentproj
指定された異なるプラットフォーム/プロファイルによってプロパティを変更できます。さらに多くのプラットフォーム(Windows Phone、Xbox 360、またはWindows)のコンテンツを作成することもできます。プロファイルには、ReachまたはHiDef(http://msdn.microsoft.com/en-us/library/ff604995.aspx)があります。
リポジトリーにバイナリーと実際のゲームが保存されているフォルダーに出力を再帰的にコピーします。
xcopy / d / y / i / e bin \ x86 \ Debug \ Content * .. \ game_output \ Content
フラグの詳細については、コマンドプロンプトで呼び出すことができますxcopy /?
。重要なものは次のとおり/d
です。変更されたファイルのみをコピーする-多くのアセットがある場合は、既存の未変更のファイルを何度もコピーしないことが便利です。/y
既存のファイルを自動的に上書きして、新しいバージョンで更新できるようにします。私が使用しxcopy
たのは、通常のcopy
方法ではフォルダを再帰的にコピーできないためです。おそらく、フォルダとサブフォルダ内のコンテンツを構造化しています。さらに、通常よりも優れていますcopy
(さまざまなフラグがたくさんあります)。
pause
スクリプトがユーザー入力を待つように呼び出します。これは、ビルドが正常でエラーが発生していないかどうかを確認するのに役立ちます。
これで、コンテンツファイルを変更するアーティスト(またはだれでも)は.cmdスクリプトをダブルクリックするだけで、新しいコンテンツがビルドされ、コミットされたアーティファクトがテストされる準備ができている出力ディレクトリにコピーされます。
ただし、小さな問題があり、Davidの投稿の最初のポイントにフォールバックする必要があります。アーティストがファイルを追加/削除/移動してコンテンツプロジェクトを変更する場合は、 Visual Studioでプロジェクトを作成します(またはプロジェクトファイルを手動で編集します。先ほど言ったように、これは小さな問題です。なぜなら、彼らはリポジトリ内の新しいファイルをコミットするだけでした。
このアイデアについて、Shawn Hargreaveasはmsbuildとコマンドラインからのコンテンツプロジェクトの構築についての記事を投稿しました:http : //blogs.msdn.com/b/shawnhar/archive/2006/11/07/build-it-ahead-of-time .aspx彼の解決策は新しいファイルを作成することでしたが、既存のプロジェクトファイルを直接使用する方が簡単で保守しやすいと思います。
PS:長い投稿xDでごめんなさい