Windows10の標準機能でC#のソースコードをビルドする

ALL
スポンサーリンク

既存のプロジェクトやソリューションをビルド

コマンドプロンプトを開き、プロジェクトファイル(.csproj)やソリューションファイル(.sln)を置いたディレクトリで、次を実行します。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild /p:Configuration=Release

bin ディレクトリ下、または bin\Release ディレクトリ下にビルドされた exeファイルが出来ます。
(生成される場所は、プロジェクトファイル(.csproj)やソリューションファイルの設定にもよります)

生成されたexeファイルからのユーザー名漏洩を避ける

VisualStudioで作成された プロジェクトファイル(.csproj)やソリューションファイル(.sln) では、生成されたexeファイルに、デバッグ用のpdbファイルへのパスが含まれる設定になっています。
そのため、もしマイドキュメントでプロジェクトを作っていたら、exeファイル内のパスから、ユーザー名が漏洩します。

対処として、.csproj 内の <DebugType>~</DebugType> の箇所は、<DebugType>None</DebugType> にするか、<DebugType>~</DebugType> 自体を削除した後、ビルドします。

または、 MSBuild 実行時のオプションで下記のように実行します。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild /p:DebugSymbols=false /p:DebugType=None

この場合、ソースやプロジェクトファイルに変更が無いと、/p:DebugSymbols=false /p:DebugType=None を付けただけでは生成バイナリに反映されません。
その時はオプションに /t:Rebuild も追加すると、リビルドされて反映されます。

プロジェクトファイルを自分で用意する(コンソールアプリ)

コンソールアプリの場合、MSBuild プロジェクト ファイルのゼロからの作成 – MSBuild | Microsoft Docs にチュートリアルがあります。
最低限の内容のみを含むプロジェクトファイルは、次のようになります。これを拡張子 .proj で作成します。
このファイルでは、helloworld.cs をビルドします。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <Compile Include="helloworld.cs" />
  </ItemGroup>
  <Target Name="Build">
    <Csc Sources="@(Compile)"/>  
  </Target>
</Project>

helloworld.cs の内容は次のようにします。

using System;

class HelloWorld
{
    static void Main()
    {
        Console.WriteLine("Hello, world!");
    }
}

次のコマンドでビルドすると、 helloworld.cs と同じ場所に helloworld.exe ができます。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild

複数のソースファイルを指定する場合は、プロジェクトファイル .proj内の <ItemGroup>~</ItemGroup> で次のように列挙します。

<ItemGroup>
<Compile Include="source1.cs" />
<Compile Include="source2.cs" />
</ItemGroup>

参考

OSに標準付属のMSBuildツールでプロジェクトをビルドするには?:.NET TIPS – @IT
.NETビルド・エンジン「MSBuild」使いこなし術(2/2) – @IT
c# — MsBuildでPDBファイルの生成を無効にする
Visual StudioユーザーがReleaseビルドをするときに必ずやってほしい2つの設定 – Qiita
MSBuild プロジェクト ファイルのゼロからの作成 – MSBuild | Microsoft Docs

コメント