MSBuildがオープンソース化される 43
ストーリー by hylom
意外なものが 部門より
意外なものが 部門より
insiderman 曰く、
Visual Studioなどで使われているMS製Makeツール「MSBuild」がオープンソース化された。すでにGitHub上にてソースコードが公開されている。現時点ではWindowsのみをサポートし、ビルドにはVisual Studio 2015 Previewが必要とのこと。ライセンスはMITライセンスなので、誰かがビルドして再配布してくれると良いのだが(汗)。
.NET Coreのオープンソース化による動きの1つのようで、告知が行われている.NET Framework Blogによると、LinuxやMacのサポートも行われる予定だという。
Windowsでのmakeツールというと、古い人間的にはnmakeのほうが親しみがあったりするわけだが、XMLベースのMSBuildは手書きで設定ファイルを書くのが大変そうというイメージでVisual Studio経由でしか使ったことがない。今後はAntやMavenのように、積極的にオープンソースソフトウェアで使われるようになるのだろうか?
ところでいつもの以下無限ループ (スコア:2)
MSBuildをMac/Linuxでビルドするための各プラットフォーム版MSBuildはどうやってビルドするのでしょうかね。
(「MSBuildがMSBuildでビルドされるとは限らない」というだけの話ではあります...)
あと個人的にはMSの書いたXMLパーサ部が気になる。IEの部品を使っているのなら、ついでにオープンソース化されるとか?
Re:ところでいつもの以下無限ループ (スコア:2)
あと個人的にはMSの書いたXMLパーサ部が気になる。IEの部品を使っているのなら、ついでにオープンソース化されるとか?
ちょっと検索してみたところ、XML関係は.NET Frameworkの標準のものを使っているようです: Search Results [github.com]。この辺りはすでにオープンソース化されている部分に含まれています: corefx/XmlDocument.cs at master · dotnet/corefx [github.com]など。
Re:ところでいつもの以下無限ループ (スコア:1)
なるほど、.NETなら納得です。
MSBuildが.NETアプリケーションであるとは想像していませんでした。
C++製だろうと思っていて、C++標準にはXMLパーサは無いはずだから何かしら必要だろうと。
.NET製ならば、移植も.NETの移植に乗って、MSBuild側のプラットフォーム依存をなんとかすれば良いわけですから、まあまあ楽ですね。
ご指摘ありがとうございます。
さすがMSソース綺麗。(ぱっと見なのでこれから熟読します)
Re: (スコア:0)
全部見てないけど、return値を変数に持たない様にしてますね。流石だ。
状態をむやみに保持しないのを、他人が書いてるのにお目に掛かる事が皆無ですから。。
まあ、Javaの現場なんですけどね。
見やすいのは筋が悪い記述を避けやすいというのがあると思います。
変に原理主義では無いというべきですかねぇ。
正しいんだけどなんかなぁ、、、というコードは書いたり見たりすると悩みますから。
Re:ところでいつもの以下無限ループ (スコア:2)
記憶が曖昧ですが、たしか「Old New Things」によると、(マクロなレベルでの話ですが)「キャッシュは可能な限り持たない」というのが、MSというかWindowsのコーディングにおける基本方針になっていたはずです。
return値の変数くらいなら、コンパイラの最適化によって実行バイナリでは消えそうな気もしますが。
そのMSコーディング文化が徹底されているということかもしれません。(もしかしたらそういったチェックも行う専用のLintツールがあるのかも)
Re: (スコア:0)
ルールの目的を勘違いしてない?
「キャッシュを持たない」ってのは、ロジックに不整合を起こさないための論理レベルでの問題を無くすための コーディングルール。
最適化で消えるかどうかっていう効率とは、全く関係がない。
いまさら、Antのばったもんみたいなのじゃなくて、 (スコア:1)
たとえば、Powershellベースのツールが欲しいな。
なんかピントずれてるよなー。
Re:いまさら、Antのばったもんみたいなのじゃなくて、 (スコア:1)
(親コメントがそういう趣旨ではないと承知しつつ)
MSBuildでカスタムの処理を記述する手段の1つに、プロジェクトファイル(makeで言うところのMakefile)にC#かVB .NETで直接コードを書ける機能があるのですが、これをPowerShellで書けたら良いのにと思います。チュートリアル: インライン タスクの作成 [microsoft.com]
サードパーティ製の拡張でそういうのが存在するのは知っていますが、本体に入っていてくれると採用しやすいなと思いまして。
Re: (スコア:0)
こんな機能があるんだ・・・しらんかった。
というか.NETのコードを好き放題書けるんだから、
PowerShellなテキストをその場で実行するインラインタスクを作ればいいのではなくて?
Re: (スコア:0)
新開発の一般向けのmakeツールとして公開したわけじゃなく、かなり前からVisual Studioで採用していた.NET関連ユーティリティの一つをオープンソースにしただけだよ。
Visual StudioがMSBuild内蔵になった頃ならともかく、今更そんなこと言われてもそっちのほうが今更です。
MSBuildが普及したら使ってやるって意見もだけど、ピントズレてませんかね?
Re:いまさら、Antのばったもんみたいなのじゃなくて、 (スコア:2, 参考になる)
だよね。.NET Coreがオープンソース化とマルチプラットフォーム化したときにMSBuildが対応できなかったせいでCMakeが採用されちゃった。
MSBuildチームとしては.NET Coreに続くしかないでしょう。
Re: (スコア:0)
.NET CoreがCMakeになっちゃったんならなおのこと「今さら」だと思うが。これからMSBuildに再度置き換えるの?
Re: (スコア:0)
本家.NETはMSBuildのままだから、オープン版がそっちに近づくってだけじゃないの?
CMakeのままだと本家側でビルドツールと連携するあれこれ追加した時にそれをオープン版に適用できなくなるじゃん。
そもそもCMake使った実装が「現時点で十分」なのかも疑問。
Re: (スコア:0)
そうしたらそうしたで「MSBuild自体を公開しないで変なパチ物だしてきて」とか叩くんでしょ?
Re: (スコア:0)
あなたと一緒にしないでくださいよ
んな下品な事するわけないじゃん 普通にありがたく使うだけ
Re: (スコア:0)
んな下品な事しはじめたのはどのツリー?
Re: (スコア:0)
http://developers.srad.jp/comments.pl?sid=654390&cid=2781998 [srad.jp]
Re: (スコア:0)
このコメント自体がずれている。
Re: (スコア:0)
お前絶対MSBuildが何なのかわかってないだろ。
Re: (スコア:0)
このコメにプラスモデした奴()
Re: (スコア:0)
タイミングよく見つけてコメントしただけかもしれないのに…
きっと自分がそういうことしてるから他人もやってると思っちゃうんだろうね。
Re: (スコア:0)
まぁ自演臭いいい加減なコメントだったんで笑っただけでしたが。
nmake使いにおすすめ (スコア:1)
> 古い人間的にはnmakeのほうが親しみがあったりするわけだが
Qtチームが出してるjomつーnmakeのクローンがある。
http://qt-project.org/wiki/jom [qt-project.org]
makefileの文法その他互換で、マルチコア(並列化)でビルド時間を短縮。
特にクリーンビルド時に効果を発揮する。
# nmake.exeにリネームして使ってる。
Re:nmake使いにおすすめ (スコア:1)
あら良さそう。困った時には(技を)使わせていただきます。
でも非互換怖いし、Qtの独自ビルドシステムは個人的にちょっと信用できないでいるので、困った時だけにしたい。
(信用できないというのはmocのほう。たまにビルド結果が信用できなくなる時があって、あえてクリーンビルドをかけたりする。
おまじないかよ、と自分でも思う)
普及したら (スコア:0)
普及したら使ってやらんでもない(超上から目線)
Re: (スコア:0)
結構前からVisual Studioに付属してて
devenvと変わらん使い勝手でした。
単純なビルドならコマンドラインだけでxmlも要らない
Re: (スコア:0)
node.jsのモジュールビルド時に呼び出されることがあり新規環境で「あ忘れてた」ってのをやらかした身としては、今回のオープン化を機にMSBuild自体が配布物に含まれるようになると手間が省けていいなあと思ったり。
VSまではいらないのに呼び出されているケースがちょくちょくあったりして今回の決定は歓迎。
オフトピ:改行コード混在 (スコア:0)
元のファイルを確認すると、この行の改行コードだけ正規化されていなくて\r\nになっているんだけど、最初から「text eol=crlf」属性が付いている状態で「769fcce」のコミットでどうやって混在したんだろう?
diff --git a/src/dirs.proj b/src/dirs.proj
index 3bcb30f..7cf11da 100644
--- a/src/dirs.proj
+++ b/src/dirs.proj
@@ -18,7 +18,7 @@
<Import Project="..\dir.traversal.targets" />
<PropertyGroup>
- <!-- Explicitly set the OutDir as it is used by the packaging targets -->
+ <!-- Explicitly set the OutDir as it is used by the packaging targets -->
<OutDir>$(BaseOutputPathWithConfig)</OutDir>
</PropertyGroup>
覚えると意外と。。。 (スコア:0)
昔TFSの自動ビルドはMSBuildで作るしかなかったので頑張って覚えた。
Visual Studioに外部ファイルとして登録したり、プロジェクトファイルをゴソゴソしてAfterBuild時に動かしたりしてますよ。
TFSの自動ビルドがWFベースになってもずっとMSBuild使っているから今回の発表はびっくりした。
長年のなぞ (スコア:0)
unix はkernelでもなんでも
make
で作れるようになってるけど、たとえば windows XP なんかは
マウスで build を選ぶと出荷のCD-ROMイメージが出来るように
なっているのか?
Re:長年のなぞ (スコア:1)
よく知らんのだが、今時のLinuxディストリビューションは、「make」一発でISOファイルができるようになってるの?
Re: (スコア:0)
Debian はなってる
Re:長年のなぞ (スコア:1)
カーネル、ブートローダ、debパッケージ等など、すべてソースからビルドされて、ISOが生成されるって意味?
そりゃテストが大変だな。
Re: (スコア:0)
DebianじゃないけどAOSPも参照するといいかもしれない。
ソースコードのルート階層でmakeをすればイメージが作成できる。ほかのディレクトリでビルドスクリプトのコマンドのmmを使えばモジュール単位でビルドできる。
Re:長年のなぞ (スコア:1)
『まずビルドシステムをビルドする必要があってな?』
...と、Ubuntuで自分用ISO作ろうと思った時に調べたら、なっていたような記憶がある。記憶違いかもしれませんが。
(ずっと昔の過去のことです。最近はパッケージを標準リポジトリからapt-getできるようになっていたはず。)
Re:長年のなぞ (スコア:1)
『もちろんMSにはビルド専門のチームがあって...』という話は既知なのだと思っていました。(「NTを作った男たち」とか。)
しかし考えてみれば、Windowsの出荷版について、ワンステップビルドの確証となるソースは覚えがありません。
とりあえずビルド手順が自動化可能になっているのは確実です。(でないと開発版のビルドサーバを複数平行してセットアップ・実行できない)
たぶん事実上ワンステップなのでしょう。
根拠になるかと思ってJoel on Softwareを読み返したのですが、これはすでに退社した元Excelチーム職員によるビルドシステムのススメでした。
http://local.joelonsoftware.com/wiki/%E3%83%87%E3%82%A4%E3%83%AA%E3%83... [joelonsoftware.com]
以下オフトピ。
私も、自作フォントはワンテップで配布版ビルドが作れるようにしたいのですが、現実は中々ままならないものです。
現在はスクリプトが「画像からフォントをビルド」「付属配布物(ドキュメント他)をビルド」「フォントと付属配布物を集約してビルド」の3ステップに分かれています。
わたしの場合は作業者が(事実上)一人なので、ワンステップビルドにこだわる必要はないのでしょうけれど。
逆にMSくらいの規模になると、関わる人数が多すぎて、ワンステップにしないわけにはいかなくなるかと。
Re: (スコア:0)
闘うプログラマーで、毎晩ビルドが走っててショーストッピングを起こしたコミッターにビルド管理者をバトンタッチとか無かったか?
あれは自動化されているというのとは別なのかな。
Re: (スコア:0)
調べる労力や自分で知ろうとする手間を全力で放棄してるようなら長年の謎にもなるだろうさ
もしも冗談としてその文章を書いたのだとしたら……
センスないから上達するまでの数年間は控えた方がいい
Re: (スコア:0)
「焼肉の裏と表がどっちなのか長年の謎」
みたいな彼渾身の持ちネタなのかも。
Re: (スコア:0)
Re: (スコア:0)
MSBuildが採用されたのはXPより後だし、MSBuildはGUIアプリケーションじゃないのに「マウスで build を選ぶと」なんて言われてもなぁ・・・
MSBuild関係ない疑問だとしても、そもそもWindowsなんてデカブツ、ワンタッチでビルドできてもそれ以外の雑事や時間がかかりすぎてあんまり嬉しくないんじゃない?
WindowsUpdateで済ます場合とかFixIt用の部分ビルドとか、いちいちISO作ったりはしないケースのほうが多そうだし。
つかunixでもmakeじゃなくてantの場合もあるしシェルスクリプトの場合もあるでしょうに。
NAnt じゃダメなん? (スコア:0)
MSBuild は文法が分かりにくくて覚える気になれなかった。
んだけど NAnt について話してる人居ないし、期待高いのかしら?