2012-04-30 12 views
2

.csprojファイルを変更して、追加のコンパイルシンボルを含むようにして、私の.slnから2つの異なるDLLファイルセットを生成します。私は解決策を構築するために熊手を使って、次のタスクのビルド持っている:あなたは、私が呼び出すことがわかりますrakeターゲットを2回呼び出す方法

desc "Builds new regular and AsDrawableGameComponent DLLs." 
task :BuildNewDLLs => [:DeleteExistingDLLs, :Build, :UpdateCsprojFilesToBuildAsDrawableGameComponentDLLs, :Build, :RevertCsprojFilesToBuildRegularDLLs] 

を:私は、使用してDLLファイルの両方のセットを生成しよう

#========================================================== 
desc "Builds the DPSF.sln in Release mode." 
msbuild :Build do |msb| 
    puts 'Building the DPSF solution...' 
    msb.properties :configuration => :Release 
    msb.targets [:Clean, :Rebuild] 
    msb.solution = DPSF_SOLUTION_FILE_PATH 
    msb.parameters "/nologo", "/maxcpucount", "/fileLogger", "/noconsolelogger" 
    msb.verbosity = "quiet" # Use "diagnostic" instead of "quiet" for troubleshooting build problems. 

    # Delete the build log file if the build was successful (otherwise the script will puke before this point). 
    File.delete('msbuild.log') 
end 

を:ここで2回ビルドしてください。問題は、最初のものだけが実行されることです。ビルドターゲットをコピー&ペーストしてBuild2と呼ぶと、BuildNewDLLsを呼び出してBuild2をもう一度呼び出すと、すべて正常に動作します。ビルドターゲットをBuildNewDLLsターゲットから複数回ビルドすることができるように、どうすればいいですか?

ありがとうございます。

答えて

6

デフォルトでは、各レイクタスクはセッションごとに1回だけ実行されます。次のコードを使用してビルドタスクを再度有効にすることができます。

::Rake.application['Build'].reenable 

これにより、同じセッションで再実行できるようになります。

私はkを
+0

を?私が試した: 'タスク:BuildNewDLLs => [:DeleteExistingDLLs、:ビルド:UpdateCsprojFilesToBuildAsDrawableGameComponentDLLs、:: Rake.application [ 'ビルド']を再度有効に、:。ビルド:RevertCsprojFilesToBuildRegularDLLs]'エラーを与える は「ドン」をタスク 'ビルド'を構築する方法を知っています。 UpdateCsprojFilesToBuildAsDrawableGameComponentDLLsタスクの下部に追加しようとしましたが、ビルドがまだ実行されませんでした。 そして私はそれを自分自身のタスク "RenableBuildTask"に入れてみました。それは第2ビルドの前に呼ばれましたが、それでも2回目は実行されませんでした。 私は何が欠けていますか? – deadlydog

+0

私はこのコードをビルドタスク自体の下に追加しようとしましたが、それでも2回目は実行されませんでした。 – deadlydog

+0

また、私は、 'Rake :: Task [" Build "]。reenable'を[link](http://stackoverflow.com/questions/577944/how-to-run-rake-tasks-from-html)で提案したように使ってみました。 rake-tasks内)、しかし同じ結果があった:( – deadlydog

6

今、この古い質問ですが、私はちょうどドキュメンテーションのためになるよう、これを考え出す15分を費やして、ここに行く:

あなたがしたい同じタスク内からreenableを呼び出すことができますreenable。そしてtaskブロックは、最初の引数として現在のタスクを生成するので、あなたが行うことができます:

task :thing do |t| 
    puts "hello" 
    t.reenable 
end 

そして今、これは動作します。私はこのコードを入れてください

rake thing thing 
関連する問題