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
War es hilfreich?

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

lesen

Option # 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

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top