À ce stade, il n'y a pas de soutien direct dans la tâche MSBuild pour la construction de multiples solutions. Il y a quelques options disponibles, cependant. Cela dépend surtout de la syntaxe que vous préférez pour ce faire, mais elles impliquent toutes une sorte de boucle. Au fait: albacore v0.2.2 était juste sorti il y a quelques jours. Par défaut, .net 4, et raccourcit la .path_to_command en .command. Comme il est par défaut, vous n'avez pas besoin de spécifier la commande .command à utiliser. Je vais utiliser cette syntaxe pour les exemples, ici. Vous pouvez lire les notes de version supplémentaires à http://albacorebuild.net
Option 1
charge la liste des solutions dans un msbuild de tableau et appel à chaque solution. ceci ajoutera la tâche: build avec plusieurs instances de msbuild et quand vous appelez la tâche: build, elles seront toutes construites.
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
appelant rake build
ou en spécifiant :build
comme une dépendance de toute autre tâche construira toutes vos solutions.
Option # 2
option 2 est fondamentalement la même ce que je viens ... sauf montrais vous pouvez appeler la classe MSBuild
directement au lieu de la tâche msbuild
msb = MSBuild.new
msb.solution = ...
msb.properties ...
#other settings...
cette let vous créez de une tâche comme vous le souhaitez, puis vous pouvez effectuer votre boucle où vous voulez. Par exemple:
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
Maintenant, lorsque vous appelez rake build_all_solutions
ou que vous ajoutez :build_all_solutions
comme une dépendance à une autre tâche, toutes vos solutions seront construites.
...
il y a une douzaine ont probablement des variations qui peuvent être faites, en fonction de ce que je l'ai montré ici. Cependant, ils ne diffèrent pas de manière significative - juste quelques façons différentes de trouver toutes les solutions, ou de les parcourir.