方法 : ビルドをクリーンする
ビルドをクリーンすると、プロジェクト ファイルとコンポーネント ファイルを残して、中間ファイルや出力ファイルがすべて削除されます。 このプロジェクト ファイルおよびコンポーネント ファイルから、中間ファイルと出力ファイルを新たにビルドできます。 MSBuild に用意されている一般的なタスクのライブラリには、システム コマンドを実行するための Exec タスクが含まれています。 タスクのライブラリの詳細については、「MSBuild タスク リファレンス」を参照してください。
出力項目用ディレクトリの作成
既定では、プロジェクトをコンパイルして作成される .exe ファイルは、プロジェクト ファイルやソース ファイルと同じディレクトリに格納されます。 しかし、出力項目は別個のディレクトリに作成するのが一般的です。
出力項目用ディレクトリを作成するには
ディレクトリの場所と名前を定義するには Property 要素を使用します。 たとえば、プロジェクトやソースファイルを格納するディレクトリに、BuiltApp という名前のディレクトリを作成するには、次のようにします。
<builtdir>BuiltApp</builtdir>
ディレクトリが存在しない場合は、MakeDir タスクを使用してディレクトリを作成します。 次に例を示します。
<MakeDir Directories = "$(builtdir)"
Condition = "!Exists('$(builtdir)')" />
出力項目の削除
新しい中間ファイルや出力ファイルを作成する前に、既存の中間ファイルと出力ファイルはすべて削除しておきます。 ディレクトリと、そのディレクトリに格納されたすべてのファイルおよびディレクトリをディスクから削除するには、RemoveDir タスクを使用します。
ディレクトリと、そのディレクトリに格納されたすべてのファイルを削除するには
RemoveDir タスクを使用してディレクトリを削除します。 次に例を示します。
<RemoveDir Directories="$(builtdir)" />
使用例
次のコード例に示すプロジェクトには、RemoveDir タスクを使用して、ディレクトリとそのディレクトリに格納されたすべてのファイルおよびディレクトリを削除する新しいターゲット Clean が含まれています。 また、この例では、出力項目用の別のディレクトリが Compile ターゲットによって作成されます。このディレクトリは、ビルドがクリーンされたときに削除されます。
Compile は既定のターゲットとして定義されているため、別のターゲットを指定しない限り自動的に使用されます。 別のターゲットを指定する場合は、コマンド ライン スイッチ /target を使用します。 次に例を示します。
msbuild <file name>.proj /target:Clean
/target スイッチは、/t のように省略でき、複数のターゲットを指定することもできます。 たとえば、ターゲット Clean と Compile を順に使用する場合は、次のように入力します。
msbuild <file name>.proj /t:Clean;Compile
<Project DefaultTargets = "Compile"
xmlns="https://schemas.microsoft.com/developer/msbuild/2003" >
<PropertyGroup>
<!-- Set the application name as a property -->
<name>HelloWorldCS</name>
<!-- Set the output folder as a property -->
<builtdir>BuiltApp</builtdir>
</PropertyGroup>
<ItemGroup>
<!-- Specify the inputs by type and file name -->
<CSFile Include = "consolehwcs1.cs"/>
</ItemGroup>
<Target Name = "Compile">
<!-- Check whether an output folder exists and create
one if necessary -->
<MakeDir Directories = "$(builtdir)"
Condition = "!Exists('$(builtdir)')" />
<!-- Run the Visual C# compiler -->
<CSC Sources = "@(CSFile)"
OutputAssembly = "$(BuiltDir)\$(appname).exe">
<Output TaskParameter = "OutputAssembly"
ItemName = "EXEFile" />
</CSC>
<!-- Log the file name of the output file -->
<Message Text="The output file is @(EXEFile)"/>
</Target>
<Target Name = "Clean">
<RemoveDir Directories="$(builtdir)" />
</Target>
</Project>