私たちの場合、このソリューションはRake + Albacoreの束であることが判明しました。 これは何? Rakeは、Rubyで記述されたプログラムコードのアセンブリを自動化するためのツールです。 Rake on habrについては、すでにユーザーLass_uaの非常に詳細な記事があり ました (ちなみに、これについては彼に感謝します)。 MSBuildスクリプトからは得られない、非常に優れた柔軟性のために選択したと言えます。 これは、アセンブリプロセス全体が、実際にはRubyプログラムによって記述されているためです。
しかし、Albacoreについては、驚いたことに、単一の記事は見つかりませんでしたが、これは既にかなり成熟した有名なプロジェクトです
Albacoreとは何ですか?
実際、 Albacoreは、.Netプロジェクトの構築に特化したRakeのカスタムタスクのセットにすぎません。 完全なリストは次のとおりです。
- ASP.NETコンパイラー
- アセンブリ情報ジェネレーター
- CSC-C-Sharpコンパイラ
- Exec-任意のコマンドラインを実行します
- 流Fluな移住者
- Msbuild
- Mspec
- MSTest
- ナント
- ンチャーン
- NCoverコンソール
- NCoverレポート
- Ndepend
- NugetPack-.nuspecファイルから.nugetパッケージを作成する
- NugetPush-.nugetパッケージをオンラインでプッシュします。
- NugetPublish-.nugetパッケージをオンラインで公開します。
- ユニット
- Nuspec-.nugetパッケージを作成するための.nuspecファイルを生成する
- 出力-ファイルのコピーやテンプレートの展開など、一般的なビルド出力タスク
- 点滅
- SQLCmdTask
- 解凍する
- Xunit
- 郵便番号
インストールと使用
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は私にとって新しい言語であり、インターネット上に存在する情報量とさまざまな有用なコード、そして言語自体の利便性と機能に驚きました。 私は彼との知り合いがそこに留まることはないと思うので、小規模な関連ユーティリティのプロジェクトで引き続き使用する予定です。