熊手+アルバコア。 Rubyを使用して.Netプロジェクトを構築する

.Netプロジェクトのアセンブルに関して、最初に思い浮かぶのは、MSBuildユーティリティ+関連ビルドスクリプトです。 実際、プロジェクトは小規模ですが、その能力は十分です。 しかし、時間の経過とともにコードの量が増加し、製品の構造がより複雑でわかりにくくなり、より柔軟なソリューションを見つけることを考え始めます。

私たちの場合、このソリューションはRake + Albacoreの束であることが判明しました。 これは何? Rakeは、Rubyで記述されたプログラムコードのアセンブリを自動化するためのツールです。 Rake on habrについては、すでにユーザーLass_uaの非常に詳細な記事があり ました (ちなみに、これについては彼に感謝します)。 MSBuildスクリプトからは得られない、非常に優れた柔軟性のために選択したと言えます。 これは、アセンブリプロセス全体が、実際にはRubyプログラムによって記述されているためです。
しかし、Albacoreについては、驚いたことに、単一の記事は見つかりませんでしたが、これは既にかなり成熟した有名なプロジェクトです

Albacoreとは何ですか?

実際、 Albacoreは、.Netプロジェクトの構築に特化したRakeのカスタムタスクのセットにすぎません。 完全なリストは次のとおりです。

インストールと使用

RakeとAlbacoreをインストールします。
gem install rake 

 gem install albacore 

Albacoreを使用するには、rakefileに適切なモジュールを挿入するだけです
 require 'albacore' 

現在、Rakeタスクに加えて、Albacoreタスクも使用できます。 私たちの場合、最もよく使用されるのは、MSBuild(実際には、指定されたパラメーターでMSBuild.exeを呼び出す)とExec(Windowsコマンド環境で任意のコマンドを実行する)です。

MSBuildを呼び出します:
  msbuild :build_solution do |msb| msb.properties = { :configuration => :Debug } msb.targets = [ :Clean, :Build ] msb.solution = "path/to/your/solution.sln" end 

ここで唯一必要なフィールドはソリューションです。 このタスクの使用方法の詳細な手順については、 こちらをご覧ください。

Execの場合、コマンド自体とそのパラメーターの2つのフィールドのみを定義する必要があります
  exec do |cmd| cmd.command = "LIB\\sgen\\sgen.exe" cmd.parameters = "BIN\\mylovely.dll /force" end 


残念ながら、Albacoreのタスクリストは、.Netプロジェクトを組み立てるときに発生する可能性のあるすべてのニーズをまだカバーしていません。 このプロジェクトでは、テストにGallioを使用していますが、このリストには含まれていません。 しかし、結局のところ、Rubyコミュニティが私たちのような人々の面倒を見てくれ、クエリ「gallio rake」への最初のリンクがgithubにつながりました。対応するタスクのコードを説明してください。

印象

RakeとAlbacoreの組み合わせへの移行は非常に迅速かつ簡単であり、プロジェクトを構築するために必要な柔軟性が得られました。 Rubyは私にとって新しい言語であり、インターネット上に存在する情報量とさまざまな有用なコード、そして言語自体の利便性と機能に驚きました。 私は彼との知り合いがそこに留まることはないと思うので、小規模な関連ユーティリティのプロジェクトで引き続き使用する予定です。

Source: https://habr.com/ru/post/J148545/


All Articles