Albacoreを使用して一度に複数のプロジェクトを構築するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4393848

  •  10-10-2019
  •  | 
  •  

質問

RakeとAlbacoreを使用して複数のC#プロジェクトを構築しようとしています。ループなしでこれを行うことができるはずですが、うまく機能させることはできません。私がしなければならないことはこれです:

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

このようなクリーンなことをしたいです

msbuild :selected_test_projects do |msb, args|
  msb.path_to_command = @net40Path
  msb.properties :configuration =>  :Release,
  msb.targets [ :Test]
  msb.solution = @teststorun
end
役に立ちましたか?

解決

この時点で、複数のソリューションを構築するためのMSBUILDタスクに直接サポートはありません。ただし、利用可能なオプションがいくつかあります。それは主に、あなたがこれを行うのに最適な構文にかかっていますが、それらはすべて何らかのループを伴います。

ちなみに、Albacore V0.2.2は数日前にリリースされました。デフォルトで.NET 4で、.path_to_commandを.commandに短縮します。ただし、デフォルトであるため、使用する.commandを指定する必要はありません。この構文を例に使用します。追加のリリースノートを読むことができます http://albacorebuild.net

オプション1

ソリューションのリストを配列にロードし、各ソリューションのMSBUILDを呼び出します。これにより、次のように追加されます。MSBuildの複数のインスタンスを使用してタスクをビルドし、以下を呼び出すと、すべてがビルドされます。

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

電話 rake build または指定 :build 他のタスクの依存関係として、すべてのソリューションを構築します。

オプション#2

オプション2は基本的に私が見たものと同じです...あなたが電話できることを除いて MSBuild の代わりに直接クラス msbuild タスク

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

これにより、希望どおりにタスクを作成し、どこでもループを実行できます。例えば:

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

今、あなたが電話するとき rake build_all_solutions または追加します :build_all_solutions 別のタスクへの依存として、すべてのソリューションが構築されます。

...

ここで示したことに基づいて、おそらくできる数十のバリエーションがあります。ただし、それらは大きく異なりません - すべてのソリューションを見つけるか、それらをループするためのいくつかの異なる方法だけです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top