На данный момент в задаче 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
в качестве зависимости от другой задачи, все ваши решения будут построены.
...
возможно, есть дюжина вариантов, которые можно сделать, основываясь на том, что я показал здесь. Однако они не сильно отличаются — просто несколько разных способов найти все решения или перебрать их.
person
Derick Bailey
schedule
09.12.2010