Pregunta

Estoy tratando de construir varios proyectos de C # con el rastrillo y el atún blanco. Se siente como que debería ser capaz de hacer esto sin un bucle, pero no puedo hacerlo bastante trabajo. Lo que tengo que hacer es lo siguiente:

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

Prefiero hacer algo más limpio, como este

msbuild :selected_test_projects do |msb, args|
  msb.path_to_command = @net40Path
  msb.properties :configuration =>  :Release,
  msb.targets [ :Test]
  msb.solution = @teststorun
end
¿Fue útil?

Solución

En este momento, no hay apoyo directo en la tarea de MSBuild para la construcción de múltiples solutions.There son algunas opciones disponibles, sin embargo. En su mayoría se trata de lo que sintaxis como la mejor para hacer esto, pero todos ellos implican un bucle de algún tipo.

Por cierto: el atún blanco v0.2.2 estaba lanzamiento hace unos pocos días. Por defecto es .NET 4, y acorta el .path_to_command a .command. Desde su valor por defecto, sin embargo, no es necesario especificar el .command a su uso. Voy a utilizar esta sintaxis para los ejemplos, aquí. Usted puede leer notas de la versión adicionales en http://albacorebuild.net

Opción # 1

cargar la lista de soluciones en una matriz y llamada msbuild para cada solución. Esto añadirá el: acumulación de tareas con múltiples instancias de msbuild y cuando se llama al:. tarea de construcción, todos ellos se construirá

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

llamando rake build o especificar :build como una dependencia en cualquier otra tarea va a construir todas sus soluciones.

Opción # 2

La opción 2 es básicamente lo mismo lo que acaba de aparecer ... excepto que usted puede llamar a la clase MSBuild directamente en lugar de la tarea msbuild

msb = MSBuild.new
msb.solution = ...
msb.properties ...
#other settings...

Vamos a crear una tarea de la forma que desee, y luego se puede llevar a cabo su bucle donde desee. Por ejemplo:

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

Ahora, cuando se llama rake build_all_solutions o agregar :build_all_solutions como una dependencia en otra tarea, todas sus soluciones se construirá.

...

hay probablemente tienen una docena de variaciones que se pueden hacer, en base a lo que he mostrado aquí. Sin embargo, no difieren significativamente - sólo algunas maneras diferentes para encontrar todas las soluciones, o de bucle a través de ellos

.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top