На данный момент в задаче MSBuild нет прямой поддержки для построения нескольких решений. Однако есть несколько доступных вариантов.В основном все сводится к тому, какой синтаксис вам нравится больше всего для этого, но все они включают какой-то цикл.
Кстати: albacore v0.2.2 был выпущен несколько дней назад.По умолчанию это .net 4 и сокращает .path_to_command до .command.Так как он по умолчанию, вам не нужно указывать .command для использования.Я буду использовать этот синтаксис для примеров, здесь.Вы можете прочитать дополнительные примечания к выпуску в http://albacorebuild.net
Опция # 1
Загрузить список решений в массив и вызвать msbuild для каждого решения.это добавит задачу: build с несколькими экземплярами msbuild, и при вызове задачи: build все они будут собраны.
solutions = ["something.sln", "another.sln", "etc"]
solutions.each do |solution|
#loops through each of your solutions and adds on to the :build task
msbuild :build do |msb, args|
msb.properties :configuration => :Release,
msb.targets [:Test]
msb.solution = solution
end
end
с вызовом rake build
или указанием :build
в качестве зависимости влюбая другая задача создаст все ваши решения.
Вариант № 2
Вариант 2 в основном такой же, как я только что показал ... за исключением того, что вы можете назвать MSBuild
класс напрямую вместо msbuild
задачи
msb = MSBuild.new
msb.solution = ...
msb.properties ...
#other settings...
это позволит вам создать задачу любым удобным вам способом, а затем вы сможете выполнять свой цикл в любом месте.Например:
task :build_all_solutions do
solutions = FileList["solutions/**/*.sln"]
solutions.each do |solution|
build_solution solution
end
end
def build_solution(solution)
msb = MSBuild.new
msb.properties :configuration => :Release,
msb.targets [:Test]
msb.solution = solution
msb.execute # note: ".execute" replaces ".build" in v0.2.x of albacore
end
Теперь, когда вы вызываете rake build_all_solutions
или добавляете :build_all_solutions
в качестве зависимости от другой задачи, будут построены все ваши решения.
...
вероятно, есть дюжина вариантов, которые можно сделать, основываясь на том, что я здесь показал.Однако они не отличаются значительно - всего несколько разных способов найти все решения или пройтись по ним.