2011-01-15 8 views
2

engine.dllに依存するgame.exeがあるとします。 game.csprojをビルドするときに、engine.csprojが、それを参照しているプロジェクトのOutputPathにいくつかのものをコピーします。 は、したがって、この例の場合では、私はengine.csprojは私がengine.csprojgame.csprojの$(OutputPath)を取得するにはどうすればよいMsbuildはメインプロジェクトのOutputPathを取得します

game.csprojOutputPathに何かをコピーしたいですか?私はこのようなゲームエンジンにコンテンツプロジェクトを構築していますので、私はこれをしたい理由がある

<Target Name="BuildContent"> 
    <MSBuild Projects="Content\Content.contentproj" 
      Properties="OutputPath=MAINPROJECTPATH" /> 
</Target> 

だから私はその「メインプロジェクト」にOutputPathを指定する必要がありますゲームです。

答えて

4

でいくつかの -buildイベントコードをコピーして、どちらか私が解決策を見つけたいくつかのmsbuildターゲットの周りをうっとりしていました。

私はこの

<Target Name="BuildContent"> 
     <MSBuild Projects="Content\Content.contentproj" 
       Properties="ParentOutputDir=$(ParentOutputDir); 
          ParentIntermediateDir=$(ParentIntermediateDir); 
          ParentProjectDir=$(ProjectDir);" /> 
</Target> 
1

最初に、プロジェクトからの参照を使用して自動的には実行されない、コピーする必要がある追加のファイルの正確な内容は不明です。

エンジンプロジェクトにプロジェクトプロジェクトの参照(DLLファイルの参照ではなく)が含まれている場合、msbuildはEngineからのすべての出力をGame出力ディレクトリにコピーする必要がありますか?

プロジェクト間でファイルを手動でコピーする必要がある場合は、どのプロジェクトが現在のプロジェクトを参照しているかを簡単に見つける方法はないと思うので、エンジンで間接レベルを作成する方が簡単でしょうファイル道の残り引っ張っファイル(これらのファイルをインクルードする必要があり、または任意の他のプロジェクト)の半分の方法とゲームのプッシュ:

  1. 一部ポストをEngine.csprojで -buildイベントコードは「参考資料を作成しましたSolutionDirの下の "ディレクトリに移動し、そこに共有したいファイルをコピーします。
  2. その後Game.csprojは「参照」ディレクトリからファイルを含めることができます - 直接ファイル参照として、またはでGame.csproj
+0

のような親のプロパティを使用して、私は私が(csprojファイルで)このような他のプロジェクト内のプロジェクトを構築していますので、これは必要な理由を渡す必要がありますContent \ Content.contentproj "プロパティ=" OutputPath = MAINPROJECTPATH "> –

関連する問題