Question

Je mets cette classe ensemble, mais il ne fonctionne pas à courir en fait une construction. J'inséré une autre exploitation forestière et aucune erreur sont élevés. Je me déclare comme un noob sur Ruby espérant ainsi une belle Ruby Expert peut repérer toute erreur stupide que j'ai!

require 'rubygems'
require 'albacore'
require 'albacore/support/albacore_helper'
require 'rake'
require 'rake/tasklib'

class Build_Assembly
  def build(build_properties)
    puts 'doing an assembly build'

    msbuild :compile do |msb|
      puts 'running build'

      msb.properties :configuration => :Debug
      msb.targets :Clean, :Build
      msb.solution = build_properties.solution_file_location
      msb.execute
    end
  end
end

J'ai aussi essayé d'utiliser: construire plutôt que: la compilation.

J'ai vu germon travailler et de réaliser la puissance de celui-ci, juste besoin d'obtenir mes compétences un peu adouci, espérons

Était-ce utile?

La solution

la méthode msbuild que vous appelez exécute jamais parce germon est une suite de tâches de râteau et msbuild est l'une de ces tâches qui veut être exécuté par râteau, pas directement dans une autre méthode, mais il peut être fait.

Appel msb.execute à l'intérieur du bloc do |msb| ... end ne sera pas exécuter la tâche, parce que ce bloc ne sera évalué que la tâche de coupe lui-même est exécutée.

vous avez quelques-unes des options pour obtenir ce travail. option 1 est l'utilisation recommandée et prévue de germon. Je recommande fortement d'utiliser râteau et Albacore comme ils étaient destinés à être utilisés, de sorte que vous ne rencontrez des problèmes à l'avenir. option # 2 et # 3 travailleront en ce moment, mais les changements à l'API de râteau ou germon peuvent briser ces sans préavis. Bien sûr, vous pouvez les utiliser comme vous le voulez ou besoin.

1. transformer cela en un script de coupe au lieu d'une classe et de méthode

# rakefile.rb
require 'albacore'

task :default => [:compile]

msbuild :compile do |msb|
  puts 'running build'
  msb.properties :configuration => :Debug
  msb.targets :Clean, :Build
  msb.solution = build_properties.solution_file_location
end

et ensuite exécuter ce par l'intermédiaire d'un râteau, en appelant rake à partir de la ligne de commande, dans le même répertoire que le rakefile.rb

2. utiliser Task[:compile].execute pour exécuter la tâche dans votre méthode.

depuis l'appel msbuild est une tâche de râteau et non une méthode standard qui exécute le code de suite, vous devez exécuter manuellement la tâche qui est créé dans les coulisses. cela rendra votre travail de code existant, mais ce n'est pas vraiment la façon recommandée de travailler avec des tâches de râteau.

require 'rubygems'
require 'albacore'
require 'albacore/support/albacore_helper'
require 'rake'
require 'rake/tasklib'

class Build_Assembly

  def build(build_properties)
    puts 'doing an assembly build'

    msbuild :compile do |msb|
      puts 'running build'
      msb.properties :configuration => :Debug
      msb.targets :Clean, :Build
      msb.solution = build_properties.solution_file_location
    end

    Task[:compile].execute
  end
end

3. utiliser la classe MSBuild directement, au lieu de la tâche de râteau msbuild

si vous avez vraiment besoin de faire appel msbuild à partir d'une méthode, alors vous devriez éviter d'utiliser la tâche msbuild et appeler la classe MSBuild directement. Laissez vous ce Travaillons directement avec le code que vous voulez ... plus passer par râteau pour appeler quelque chose que vous pouvez appeler directement

require 'rubygems'
require 'albacore'
require 'albacore/support/albacore_helper'
require 'rake'
require 'rake/tasklib'

class Build_Assembly

  def build(build_properties)
    puts 'doing an assembly build'

    msb = MSBuild.new
    puts 'running build'
    msb.properties :configuration => :Debug
    msb.targets :Clean, :Build
    msb.solution = build_properties.solution_file_location
    msb.execute
  end
end

est le seul scénario dans lequel vous devez appeler .Execute, manuellement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top