本文へスキップ
BecomeCoder

C#実践コース · 第3章 ビルド・ツールとプロジェクト基礎 · レッスン15

ビルドとコンパイルの仕組み(ローカル実施)

ローカル実施
スターターをダウンロード(.zip)

導入

ここまでのレッスンは、書いたコードをその場でコンパイルして実行していました。実務では「プロジェクトとしてまとめ、ビルドし、実行可能な成果物を作る」工程が挟まります。まずは仕組みを理解しましょう。

図解

flowchart LR
    SRC["ソース *.cs"] --> COMP["C♯コンパイラ<br/>(Roslyn)"]
    CSPROJ["*.csproj<br/>ビルド設定"] -.->|指示| COMP
    COMP --> IL["中間言語 IL<br/>*.dll"] --> RT[".NETランタイム<br/>実行時にネイティブへ(JIT)"]

C#ソースは直接機械語にならず、まず**IL(中間言語)**へコンパイルされ、実行時にランタイムがネイティブ化します(JIT)。この仕組みにより、ビルドしたdllは.NETランタイムのある環境ならOSを問わず動きます。

詳細手順(dotnet CLI)

  1. スターター99-build-compile/starter.zipを展開する
  2. ターミナル(Visual Studioの「開発者コマンドプロンプト」でも可)で順に実行する:
dotnet new console -o MyApp   # コンソールアプリの雛形を作成
cd MyApp
dotnet build                  # コンパイル → bin/Debug/ に dll/exe 生成
dotnet run                    # 必要ならビルドして実行 → Hello, World!
ターミナルで dotnet build を実行し「ビルドに成功しました」と表示された画面
dotnet build の成功表示とターミナル出力
  1. bin/(成果物)・obj/(中間ファイル)が生成されることを確認する。どちらもソースから再生成できるので.gitignoreで管理対象外にする

補足

  • ILdotnet buildbin/Debug/net10.0/.dllとして出力される
  • 一度ビルドしたdllは、Windows/Mac/Linuxのどれでも.NETランタイムさえあれば動く(クロスプラットフォーム)

まとめ

  • ソース→IL→ランタイムがJITでネイティブ化、という流れで実行される
  • dotnet new/build/runが基本コマンド
  • bin/objGit管理外

次回: 同じことをVisual Studioの画面から行い、デバッグ実行とリリースの違いを学びます。

テンプレート構成(教材制作用メモ)

99-build-compile/
└── starter.zip   # README.md(手順再掲)/ 最小のコンソールアプリ