既存のプロジェクトやソリューションをビルド
コマンドプロンプトを開き、プロジェクトファイル(.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
コメント