MSBuild で特殊文字をエスケープする

MSBuild プロジェクト ファイルでは、特定の文字が特殊な意味を持ちます。 そのような文字の例として、セミコロン (;) およびアスタリスク (*) があります。 特殊文字の完全な一覧については、「MSBuild の特殊文字」を参照してください。

これらの特殊文字をプロジェクト ファイル内でリテラルとして使用するには、構文 %<xx> を使ってそれらの文字を指定する必要があります。ここで、<xx> は文字の ASCII 16 進値を表します。

MSBuild の特殊文字

特殊文字が使用される場所の 1 つの例として、アイテム一覧の Include 属性が挙げられます。 たとえば、次のアイテム一覧では、MyFile.csMyClass.cs の 2 つのアイテムを宣言しています。

<Compile Include="MyFile.cs;MyClass.cs"/>

名前にセミコロンを含む項目を宣言する場合は、構文 %<xx> を使用してセミコロンをエスケープし、MSBuild によって 2 つの別々の項目が宣言されることを防ぐ必要があります。 たとえば、次のアイテムではセミコロンをエスケープして、MyFile.cs;MyClass.cs という名前の 1 つのアイテムを宣言しています。

<Compile Include="MyFile.cs%3BMyClass.cs"/>

また、プロパティ関数を使用して文字列をエスケープすることもできます。 たとえば、これは上記の例と同じです。

<Compile Include="$([MSBuild]::Escape('MyFile.cs;MyClass.cs'))" />

MSBuild の特殊文字をリテラル文字として使用するには

特殊文字の代わりに %<xx> という表記を使用します。ここで、<xx> は ASCII 文字の 16 進値を表します。 たとえば、アスタリスク (*) をリテラル文字として使用するには、値 %2A を使用します。