Wie kann ich auf einmal mit Weißen Thun mehr Projekte bauen?
Frage
Ich versuche, mehr C # Projekte mit Harke und Weißen Thun zu bauen. Es fühlt sich an wie soll ich in der Lage sein, dies ohne eine Schleife zu tun, aber ich kann es nicht ganz funktioniert. Was ich tun muss, ist dies:
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
Ich würde lieber etwas tun, cleaner, wie dieser
msbuild :selected_test_projects do |msb, args|
msb.path_to_command = @net40Path
msb.properties :configuration => :Release,
msb.targets [ :Test]
msb.solution = @teststorun
end
Lösung
An diesem Punkt gibt es keine direkte Unterstützung in der MSBuild-Aufgabe für den Aufbau mehrerer solutions.There ein paar Optionen zur Verfügung stehen, though. Es kommt vor allem nach unten, was Syntax, die Sie am besten gefällt, dies zu tun, aber sie alle eine Schleife irgendeiner Art verbunden.
Übrigens: Weißer Thun v0.2.2 wurde loslassen gerade vor ein paar Tagen. Der Standardwert ist .net 4 und verkürzt die .path_to_command bis .command. Da es standardmäßig, aber Sie brauchen nicht die .command Gebrauch zu spezifizieren. Ich werde diese Syntax für die Beispiele verwenden, hier. Sie können zusätzliche Release-Informationen unter http://albacorebuild.net
lesenOption # 1
Laden Sie die Liste der Lösungen in ein Array und Call msbuild für jede Lösung. Build-Task mit mehreren Instanzen von msbuild und wenn Sie den Anruf: dies wird die anhängen. Aufgabe zu bauen, werden alle von ihnen gebaut werden
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
Aufruf rake build
oder :build
als Abhängigkeit in jeder anderen Aufgabe spezifiziert werden alle Ihre Lösungen bauen.
Option # 2
Option 2 ist im Grunde das gleiche, was ich gerade zeigte ... außer Sie die MSBuild
Klasse anstelle der msbuild
Aufgabe direkt aufrufen
msb = MSBuild.new
msb.solution = ...
msb.properties ...
#other settings...
Dies lässt Sie eine Aufgabe, jede mögliche Weise schaffen Sie es wünschen, und dann können Sie Ihre Schleife durchführen, wo immer Sie wollen. Zum Beispiel:
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
Wenn Sie nun rake build_all_solutions
anrufen oder Sie fügen :build_all_solutions
als die Abhängigkeit von einer anderen Aufgabe, alle Ihre Lösungen aufgebaut werden.
...
gibt es wahrscheinlich ein Dutzend Variationen haben die getan werden kann, auf das, was ich hier gezeigt habe. Aber sie unterscheiden sich nicht signifikant - um nur ein paar verschiedene Möglichkeiten, alle Lösungen oder Schleife durch sie finden
.