Come faccio a costruire più progetti contemporaneamente utilizzando Tonno bianco?
Domanda
Sto cercando di costruire più progetti C # utilizzando rastrello e tonno bianco. Ci si sente come dovrei essere in grado di fare questo senza un ciclo, ma io non riesco a farlo funzionare. Quello che ho da fare è questo:
msbuild :selected_test_projects do |msb, args|
@teststorun.each do |project|
msb.path_to_command = @net40Path
msb.properties :configuration => :Release,
msb.targets [ :Test]
msb.solution = project
msb.build
end
end
preferirei fare qualcosa di più pulito, come questo
msbuild :selected_test_projects do |msb, args|
msb.path_to_command = @net40Path
msb.properties :configuration => :Release,
msb.targets [ :Test]
msb.solution = @teststorun
end
Soluzione
A questo punto, non c'è supporto diretto nel compito MSBuild per la costruzione di molteplici solutions.There sono alcune opzioni disponibili, però. Si tratta per lo più verso il basso per quello che si sintassi come il migliore per fare questo, ma tutti comportano un ciclo di qualche tipo.
A proposito: tonno bianco v0.2.2 è stato appena rilasciato pochi giorni fa. E 'il default è 4 .net, e riduce il .path_to_command fino a .command. Dal momento che il valore predefinito, però, non è necessario specificare il .command all'uso. Userò questa sintassi per gli esempi, qui. È possibile leggere le note di rilascio aggiuntivi in ?? http://albacorebuild.net
Opzione # 1
Caricare l'elenco di soluzioni in un array e msbuild chiamata per ogni soluzione. questo aggiungerà il: build con più istanze di msbuild e quando si chiama il:. compito costruire, tutti loro verrà costruita ??p>
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
chiamando rake build
o specificando :build
come una dipendenza in qualsiasi altro compito sarà costruire tutte le soluzioni.
Opzione # 2
l'opzione 2 è fondamentalmente lo stesso quello che ho appena mostrato ... tranne che si può chiamare la classe MSBuild
direttamente al posto del compito msbuild
msb = MSBuild.new
msb.solution = ...
msb.properties ...
#other settings...
questo ti permette di creare un'attività in qualsiasi modo lo si desidera, e quindi è possibile eseguire il ciclo dove vuoi. Ad esempio:
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
Ora, quando si chiama rake build_all_solutions
o si aggiunge :build_all_solutions
come una dipendenza da un altro compito, tutte le soluzioni saranno costruiti.
...
Ci sono probabilmente una dozzina di varianti che si possono fare, in base a ciò che ho mostrato qui. Tuttavia, essi non differiscono in modo significativo - solo alcuni modi diversi per trovare tutte le soluzioni, o ciclo tra di loro
.