パスワードを忘れた? アカウント作成
11970991 story
プログラミング

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のように、積極的にオープンソースソフトウェアで使われるようになるのだろうか?

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • MSBuildをMac/Linuxでビルドするための各プラットフォーム版MSBuildはどうやってビルドするのでしょうかね。

    (「MSBuildがMSBuildでビルドされるとは限らない」というだけの話ではあります...)
    あと個人的にはMSの書いたXMLパーサ部が気になる。IEの部品を使っているのなら、ついでにオープンソース化されるとか?

    • あと個人的にはMSの書いたXMLパーサ部が気になる。IEの部品を使っているのなら、ついでにオープンソース化されるとか?

      ちょっと検索してみたところ、XML関係は.NET Frameworkの標準のものを使っているようです: Search Results [github.com]。この辺りはすでにオープンソース化されている部分に含まれています: corefx/XmlDocument.cs at master · dotnet/corefx [github.com]など。

      親コメント
      • なるほど、.NETなら納得です。
        MSBuildが.NETアプリケーションであるとは想像していませんでした。
        C++製だろうと思っていて、C++標準にはXMLパーサは無いはずだから何かしら必要だろうと。

        .NET製ならば、移植も.NETの移植に乗って、MSBuild側のプラットフォーム依存をなんとかすれば良いわけですから、まあまあ楽ですね。

        ご指摘ありがとうございます。
        さすがMSソース綺麗。(ぱっと見なのでこれから熟読します)

        親コメント
        • by Anonymous Coward

          全部見てないけど、return値を変数に持たない様にしてますね。流石だ。
          状態をむやみに保持しないのを、他人が書いてるのにお目に掛かる事が皆無ですから。。
          まあ、Javaの現場なんですけどね。

          見やすいのは筋が悪い記述を避けやすいというのがあると思います。
          変に原理主義では無いというべきですかねぇ。
          正しいんだけどなんかなぁ、、、というコードは書いたり見たりすると悩みますから。

          • 記憶が曖昧ですが、たしか「Old New Things」によると、(マクロなレベルでの話ですが)「キャッシュは可能な限り持たない」というのが、MSというかWindowsのコーディングにおける基本方針になっていたはずです。
            return値の変数くらいなら、コンパイラの最適化によって実行バイナリでは消えそうな気もしますが。

            そのMSコーディング文化が徹底されているということかもしれません。(もしかしたらそういったチェックも行う専用のLintツールがあるのかも)

            親コメント
            • by Anonymous Coward
              > return値の変数くらいなら、コンパイラの最適化によって実行バイナリでは消えそうな気もしますが。

              ルールの目的を勘違いしてない?

              「キャッシュを持たない」ってのは、ロジックに不整合を起こさないための論理レベルでの問題を無くすための コーディングルール。
              最適化で消えるかどうかっていう効率とは、全く関係がない。
  • by Anonymous Coward on 2015年03月21日 7時26分 (#2781926)

    たとえば、Powershellベースのツールが欲しいな。
    なんかピントずれてるよなー。

    • (親コメントがそういう趣旨ではないと承知しつつ)

      MSBuildでカスタムの処理を記述する手段の1つに、プロジェクトファイル(makeで言うところのMakefile)にC#かVB .NETで直接コードを書ける機能があるのですが、これをPowerShellで書けたら良いのにと思います。チュートリアル: インライン タスクの作成 [microsoft.com]

      サードパーティ製の拡張でそういうのが存在するのは知っていますが、本体に入っていてくれると採用しやすいなと思いまして。

      親コメント
      • by Anonymous Coward

        こんな機能があるんだ・・・しらんかった。
        というか.NETのコードを好き放題書けるんだから、
        PowerShellなテキストをその場で実行するインラインタスクを作ればいいのではなくて?

    • by Anonymous Coward

      新開発の一般向けのmakeツールとして公開したわけじゃなく、かなり前からVisual Studioで採用していた.NET関連ユーティリティの一つをオープンソースにしただけだよ。
      Visual StudioがMSBuild内蔵になった頃ならともかく、今更そんなこと言われてもそっちのほうが今更です。

      MSBuildが普及したら使ってやるって意見もだけど、ピントズレてませんかね?

      • by Anonymous Coward on 2015年03月21日 10時35分 (#2781994)

        だよね。.NET Coreがオープンソース化とマルチプラットフォーム化したときにMSBuildが対応できなかったせいでCMakeが採用されちゃった。
        MSBuildチームとしては.NET Coreに続くしかないでしょう。

        親コメント
        • by Anonymous Coward

          .NET CoreがCMakeになっちゃったんならなおのこと「今さら」だと思うが。これからMSBuildに再度置き換えるの?

          • by Anonymous Coward

            本家.NETはMSBuildのままだから、オープン版がそっちに近づくってだけじゃないの?
            CMakeのままだと本家側でビルドツールと連携するあれこれ追加した時にそれをオープン版に適用できなくなるじゃん。
            そもそもCMake使った実装が「現時点で十分」なのかも疑問。

    • by Anonymous Coward

      そうしたらそうしたで「MSBuild自体を公開しないで変なパチ物だしてきて」とか叩くんでしょ?

    • by Anonymous Coward

      このコメント自体がずれている。

    • by Anonymous Coward

      お前絶対MSBuildが何なのかわかってないだろ。

    • by Anonymous Coward

      このコメにプラスモデした奴()

  • by Anonymous Coward on 2015年03月21日 9時08分 (#2781967)

    > 古い人間的にはnmakeのほうが親しみがあったりするわけだが
    Qtチームが出してるjomつーnmakeのクローンがある。
    http://qt-project.org/wiki/jom [qt-project.org]
    makefileの文法その他互換で、マルチコア(並列化)でビルド時間を短縮。
    特にクリーンビルド時に効果を発揮する。
    # nmake.exeにリネームして使ってる。

    • あら良さそう。困った時には(技を)使わせていただきます。

      でも非互換怖いし、Qtの独自ビルドシステムは個人的にちょっと信用できないでいるので、困った時だけにしたい。
      (信用できないというのはmocのほう。たまにビルド結果が信用できなくなる時があって、あえてクリーンビルドをかけたりする。
        おまじないかよ、と自分でも思う)

      親コメント
  • by Anonymous Coward on 2015年03月21日 8時23分 (#2781948)

    普及したら使ってやらんでもない(超上から目線)

    • by Anonymous Coward

      結構前からVisual Studioに付属してて
      devenvと変わらん使い勝手でした。
      単純なビルドならコマンドラインだけでxmlも要らない

      • by Anonymous Coward

        node.jsのモジュールビルド時に呼び出されることがあり新規環境で「あ忘れてた」ってのをやらかした身としては、今回のオープン化を機にMSBuild自体が配布物に含まれるようになると手間が省けていいなあと思ったり。
        VSまではいらないのに呼び出されているケースがちょくちょくあったりして今回の決定は歓迎。

  • by Anonymous Coward on 2015年03月21日 8時37分 (#2781957)
    昨日早速cloneしてみたんだけど、チェックアウト直後に差分が出る。
    元のファイルを確認すると、この行の改行コードだけ正規化されていなくて\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>
  • by Anonymous Coward on 2015年03月21日 10時05分 (#2781984)

    昔TFSの自動ビルドはMSBuildで作るしかなかったので頑張って覚えた。
    Visual Studioに外部ファイルとして登録したり、プロジェクトファイルをゴソゴソしてAfterBuild時に動かしたりしてますよ。
    TFSの自動ビルドがWFベースになってもずっとMSBuild使っているから今回の発表はびっくりした。

  • by Anonymous Coward on 2015年03月21日 12時04分 (#2782027)

    unix はkernelでもなんでも
     make
    で作れるようになってるけど、たとえば windows XP なんかは
    マウスで build を選ぶと出荷のCD-ROMイメージが出来るように
    なっているのか?

    • by Ryo.F (3896) on 2015年03月21日 12時14分 (#2782028) 日記

      よく知らんのだが、今時のLinuxディストリビューションは、「make」一発でISOファイルができるようになってるの?

      親コメント
      • by Anonymous Coward

        Debian はなってる

        • by Ryo.F (3896) on 2015年03月21日 15時29分 (#2782105) 日記

          カーネル、ブートローダ、debパッケージ等など、すべてソースからビルドされて、ISOが生成されるって意味?
          そりゃテストが大変だな。

          親コメント
          • by Anonymous Coward

            DebianじゃないけどAOSPも参照するといいかもしれない。
            ソースコードのルート階層でmakeをすればイメージが作成できる。ほかのディレクトリでビルドスクリプトのコマンドのmmを使えばモジュール単位でビルドできる。

        • 『まずビルドシステムをビルドする必要があってな?』

          ...と、Ubuntuで自分用ISO作ろうと思った時に調べたら、なっていたような記憶がある。記憶違いかもしれませんが。
          (ずっと昔の過去のことです。最近はパッケージを標準リポジトリからapt-getできるようになっていたはず。)

          親コメント
    • 『もちろん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くらいの規模になると、関わる人数が多すぎて、ワンステップにしないわけにはいかなくなるかと。

      親コメント
      • by Anonymous Coward

        闘うプログラマーで、毎晩ビルドが走っててショーストッピングを起こしたコミッターにビルド管理者をバトンタッチとか無かったか?
        あれは自動化されているというのとは別なのかな。

    • by Anonymous Coward

      調べる労力や自分で知ろうとする手間を全力で放棄してるようなら長年の謎にもなるだろうさ

      もしも冗談としてその文章を書いたのだとしたら……
      センスないから上達するまでの数年間は控えた方がいい

      • by Anonymous Coward

        「焼肉の裏と表がどっちなのか長年の謎」
        みたいな彼渾身の持ちネタなのかも。

      • by Anonymous Coward
        何を控えるのだ。
    • by Anonymous Coward

      MSBuildが採用されたのはXPより後だし、MSBuildはGUIアプリケーションじゃないのに「マウスで build を選ぶと」なんて言われてもなぁ・・・
      MSBuild関係ない疑問だとしても、そもそもWindowsなんてデカブツ、ワンタッチでビルドできてもそれ以外の雑事や時間がかかりすぎてあんまり嬉しくないんじゃない?
      WindowsUpdateで済ます場合とかFixIt用の部分ビルドとか、いちいちISO作ったりはしないケースのほうが多そうだし。

      つかunixでもmakeじゃなくてantの場合もあるしシェルスクリプトの場合もあるでしょうに。

  • by Anonymous Coward on 2015年03月23日 12時29分 (#2782875)

    MSBuild は文法が分かりにくくて覚える気になれなかった。

    んだけど NAnt について話してる人居ないし、期待高いのかしら?

typodupeerror

未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー

読み込み中...