オープンソース化されたMSBuildについて

昨日のdotnetconf2015でMSBuildオープンソースになりましたね。

github.com

Miguelがゲストでセッションに参加していて、もしかして何か来るかなと思っていましたが、アタリでした。

このMSBuildのソース、基本的に新しいビルドエンジンのみが対象で、逆に旧エンジンしか無いmonoでは*1、新しいものにdllだけ差し替えるというより、別のツールにするといいかなあと個人的には思っています(xbuildじゃなくてmsbuildにする)が、既に移植を担当する新人ハカー*2がいるので、その辺はそちらの采配次第です。旧エンジンも新エンジンも同じファイル名のtargetsを使っているので、分けて使うのも簡単ではないかもしれませんし。

このMSのコード、昨日仲間内で眺めていたのですが、やはりだいぶWindows依存のコードが多く("DllImport" とか、それで引っかかる "NativeMethods" をさらに検索してみると大まかにわかります)、やはり簡単に取り込めるというわけにはいかなそうです。

ただ、referencesourceと異なり、こちらはMSもクロスプラットフォームなビルドツールにしていく方向性であるようです。

http://blogs.msdn.com/b/dotnet/archive/2015/03/18/msbuild-engine-is-now-open-source-on-github.aspx

どちらかというと coreclr, corefx, roslyn などと同じ、継続して開発・公開していくスタイルということになりそうですね。githubリポジトリも、masterの他にxplatというブランチが切られていて、早速さまざまなpull requestが取り込まれているようです。

新しいMSBuildエンジンが使えるようになると、新機能(というほど新しくもないのですが)を無理やり旧エンジンに埋め込むことなく使えるようになりますし、ビルドのパフォーマンスもある程度向上するのではないかと期待しています。

…というわけで、msbuildの取り込みは、短期的には実現しないでしょうが、それほど遠くないうちにmonoでも使えるようになるだろうとは思います。

*1:新しいMicrosoft.Build.dllのエンジンは、わたしがちょっとだけ実装していたこともあるのですが、時間が取れないままで結局使えませんでした

*2:って言ってもだいぶ前にmonoをいじっていた昔の仲間ですが