PR

Windows標準付属MSBuildでビルドする方法

Windows に標準付属する MSBuild を使用してビルドする方法です。

スポンサーリンク

MSBuild

一般的に、プログラミングを行う際は、Visual StudioVisual Studio Code など高機能な専用のソフトウェアをダウンロードしてインストールするなどして開発環境を整えるところから始まることが多くあります。

他方、リッチな開発環境を使わず、メモ帳などでソースコードを記述し、Windows 標準付属のビルド ツールでプロジェクトをビルドする方法もあります。

ここでは「MSBuild」を使用して C# プロジェクトをビルドする方法を記載します。

MSBuild でビルドする方法

作業フォルダを作成する

プロジェクト ファイルやソースコードを配置してビルドする作業フォルダを作成します。

この例では、デスクトップ上に「test」フォルダを作成します。

プロジェクトを作成する

作成したフォルダ内にテキスト ファイルを作成し、次の内容をコピー アンド ペーストして「test.csproj」として保存します:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="Program.cs" />
  </ItemGroup>
  <Target Name="Build">
    <Csc Sources="@(Compile)"/>
  </Target>
</Project>

プロジェクト ファイルが作成されたところ。

※「test.csproj.txt」となっていないか確認します

プログラムを記述する

作成したフォルダ内にテキスト ファイルを作成し、次の内容をコピー アンド ペーストして「Program.cs」として保存します:

using System;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
        }
    }
}

ソース ファイルが作成されたところ。

※「Program.cs.txt」となっていないか確認します

ターミナルを開く

作成したフォルダ内の何もないところを[右クリック]して[ターミナルを開く]をクリックします。

MSBuild を確認する

ターミナルで次のコマンドを実行し、バージョン情報が表示されるか確認します:

MSBuild /version

実行例:

PS C:\Users\Owner\Desktop\test> MSBuild /version
Microsoft (R) Build Engine バージョン 4.8.9032.0
[Microsoft .NET Framework、バージョン 4.0.30319.42000]
Copyright (C) Microsoft Corporation. All rights reserved.

4.8.9032.0

MSBuild のバージョン情報が表示された場合は、ビルドできる準備が整っています。バージョン情報が表示されなかった場合は、次の手順を実行して MSBuild を探します。

MSBuild を探す

ターミナルで次のコマンドを実行し、 MSBuild を探します:

cd c:\ && dir /s msbuild.exe /b

実行例:

Microsoft Windows [Version 10.0.22631.3672]
(c) Microsoft Corporation. All rights reserved.

C:\Users\Owner>cd c:\ && dir /s msbuild.exe /b
c:\Windows\Microsoft.NET\assembly\GAC_32\MSBuild\v4.0_4.0.0.0__b03f5f7f11d50a3a\MSBuild.exe
c:\Windows\Microsoft.NET\assembly\GAC_64\MSBuild\v4.0_4.0.0.0__b03f5f7f11d50a3a\MSBuild.exe
c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
c:\Windows\WinSxS\amd64_msbuild_b03f5f7f11d50a3a_4.0.15912.0_none_de1bfcc9998a681e\MSBuild.exe
c:\Windows\WinSxS\wow64_msbuild_b03f5f7f11d50a3a_4.0.15912.0_none_07ea43e35ad4fd3b\MSBuild.exe

この例では 6 個の MSBuild が見つかりましたので、いずれかの MSBuild を選択して使用します。この例では次の MSBuild を使用します:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe

ビルドする

ターミナルで次のコマンドを実行し、プロジェクトをビルドします:

msbuild test.csproj

実行例:

PS C:\Users\Owner\Desktop\test> c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe test.csproj
Microsoft (R) Build Engine バージョン 4.8.9032.0
[Microsoft .NET Framework、バージョン 4.0.30319.42000]
Copyright (C) Microsoft Corporation. All rights reserved.

2024/07/15 1:18:22 にビルドを開始しました。
ノード 1 上のプロジェクト "C:\Users\Owner\Desktop\test\test.csproj" (既定のターゲット)。
Build:
  C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Csc.exe /out:Program.exe Program.cs
プロジェクト "C:\Users\Owner\Desktop\test\test.csproj" (既定のターゲット) のビルドが完了しました。


ビルドに成功しました。
    0 個の警告
    0 エラー

経過時間 00:00:02.26

ビルドが成功した例。

正常にビルドが完了すると、エクスプローラーで「Program.exe」が確認できます。

実行する

ビルドが成功したらターミナルで実行ファイルを実行して動作を確認します:

PS C:\Users\Owner\Desktop\test> .\Program.exe
Hello, World!

実行ファイルが実行され、正しく「Hello, World!」が表示されました。

(これにより、高機能な専用ソフトウェアを導入しなくても、システム内に存在していた MSBuild とメモ帳で作成した2つのテキスト ファイル (プロジェクトとソースコード) を使用して実行ファイルを作成できることが確認できました)

エラー例

コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません

「コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません」

PS C:\Users\Owner\Desktop\test> msbuild test.csproj
msbuild : 用語 'msbuild' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前とし
て認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認
してから、再試行してください。
発生場所 行:1 文字:1
+ msbuild test.csproj
+ ~~~~~~~
    + CategoryInfo          : ObjectNotFound: (msbuild:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

単に「MSBuild」を実行して実行できる場合と実行できない場合があります。実行できなかった場合や特定の MSBuild を使用したい場合は、一覧から特定の MSBuild を指定して実行します。一覧を取得して指定する方法は、本記事内に記載しています。

ビルドに成功しました

PS C:\Users\Owner\Desktop\test> c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe test.csproj
Microsoft (R) Build Engine バージョン 4.8.9032.0
[Microsoft .NET Framework、バージョン 4.0.30319.42000]
Copyright (C) Microsoft Corporation. All rights reserved.

2024/07/15 1:21:31 にビルドを開始しました。
ノード 1 上のプロジェクト "C:\Users\Owner\Desktop\test\test.csproj" (既定のターゲット)。
プロジェクト ファイルに ToolsVersion="15.0" が含まれています。このツールセットが不明であるか、存在しない可能性があります。その場合は、適切なバージョンの MSBuild をインストールして解決する
か、ビルドがポリシー上の理由により特定の ToolsVersion を使用するよう強制されている可能性があります。プロジェクトを ToolsVersion="4.0" として扱います。詳細については、http://go
.microsoft.com/fwlink/?LinkId=291333 を参照してください。
Build:
  C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Csc.exe /out:Program.exe Program.cs
プロジェクト "C:\Users\Owner\Desktop\test\test.csproj" (既定のターゲット) のビルドが完了しました。


ビルドに成功しました。
    0 個の警告
    0 エラー

経過時間 00:00:00.73

「ビルドに成功しました」と表示されていますので、ビルドに成功しており、実行ファイルは出力されていますのでエラーではありませんが、「ツールセットが不明」である表示のあるパターンの例です。気になる場合は「ToolsVersion=”15.0″」を調整するなどして対処します。

error MSB4040: プロジェクトにターゲットがありません

PS C:\Users\Owner\Desktop\test> c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe test.csproj
Microsoft (R) Build Engine バージョン 4.8.9032.0
[Microsoft .NET Framework、バージョン 4.0.30319.42000]
Copyright (C) Microsoft Corporation. All rights reserved.

2024/07/15 1:14:14 にビルドを開始しました。
ノード 1 上のプロジェクト "C:\Users\Owner\Desktop\test\test.csproj" (既定のターゲット)。
C:\Users\Owner\Desktop\test\test.csproj : error MSB4040: プロジェクトにターゲットがありません。
プロジェクト "C:\Users\Owner\Desktop\test\test.csproj" (既定のターゲット) のビルドが終了しました -- 失敗。


ビルドに失敗しました。

"C:\Users\Owner\Desktop\test\test.csproj" (既定のターゲット) (1) ->
  C:\Users\Owner\Desktop\test\test.csproj : error MSB4040: プロジェクトにターゲットがありません。

    0 個の警告
    1 エラー

経過時間 00:00:00.30

「error MSB4040: プロジェクトにターゲットがありません」と表示された場合は、プロジェクトにターゲットの記載がありません。次のような内容を追記して解決します:

  <Target Name="Build">
    <Csc Sources="@(Compile)"/>
  </Target>

参考文献等

注意

  • 本操作例は、Windows 11 にインストールされていた MSBuild を使用してビルドするものです

スポンサードリンク

タイトルとURLをコピーしました