2012-04-30 1 views
2

Я генерирую два разных набора DLL-файлов из моего .sln, изменяя файлы .csproj, чтобы добавить дополнительный символ компиляции. Я использую грабли для создания решения, и имеют следующую задачу: ПостроитьКак вызвать rake target дважды

#========================================================== 
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 

тогда, когда я пытаюсь генерировать оба набора DLL-файлов с помощью:

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

Вы можете видеть, что я называю: Постройте дважды здесь. Проблема в том, что работает только первый. Если я копирую/вставляю my: создаю цель и назову ее: Build2 и измените: BuildNewDLLs, чтобы вызвать: Build2 второй раз, тогда все работает нормально. Итак, как я могу сделать это так, чтобы я мог вызвать: Создавать цель несколько раз из объекта: BuildNewDLLs?

Заранее спасибо.

ответ

6

Рейк по умолчанию гарантирует, что каждая задача грабли выполняется один раз и только один раз за сеанс. Вы можете снова включить задачу сборки с помощью следующего кода.

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

Это позволит повторить его выполнение в том же сеансе.

+0

Где разместить этот код? Я пробовал: 'задача: BuildNewDLLs => [: DeleteExistingDLLs,: Build,: UpdateCsprojFilesToBuildAsDrawableGameComponentDLLs, :: Rake.application [ 'Сложение'] снова включить.,: Build,: RevertCsprojFilesToBuildRegularDLLs]' который дает ошибку «Дон» t знать, как построить задачу «Build». Я попытался добавить его к нижней части задачи: UpdateCsprojFilesToBuildAsDrawableGameComponentDLLs, но Build все еще не запускался. И я попытался поместить его в свою собственную задачу: «RenableBuildTask» и назвал это до 2-го: Build, но он все еще не запускался во второй раз. Что мне не хватает? – deadlydog

+0

Я также попытался добавить этот код в конец: Build task сам, но он все еще не запускался во второй раз. – deadlydog

+0

Я также пробовал использовать: 'Rake :: Task [" Build "]. Reenable' как предложено в [link] (http://stackoverflow.com/questions/577944/how-to-run-rake-tasks-from- in-rake-tasks), но имел те же результаты :( – deadlydog

6

теперь K это старый вопрос, но я только что провел 15 минут выяснить это, так ради документации, здесь идет:

Вы можете позвонить reenable внутри одной и той же задачи, что вы хотите снова включить. А поскольку task блок дает текущую задачу в качестве первого аргумента, вы можете сделать:

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

И теперь это работает:

rake thing thing 
Смежные вопросы