MSBuild で特殊文字をエスケープする
MSBuild プロジェクト ファイルでは、特定の文字が特殊な意味を持ちます。 そのような文字の例として、セミコロン (;
) およびアスタリスク (*
) があります。 特殊文字の完全な一覧については、「MSBuild の特殊文字」を参照してください。
これらの特殊文字をプロジェクト ファイル内でリテラルとして使用するには、構文 %<xx>
を使ってそれらの文字を指定する必要があります。ここで、<xx>
は文字の ASCII 16 進値を表します。
MSBuild の特殊文字
特殊文字が使用される場所の 1 つの例として、アイテム一覧の Include
属性が挙げられます。 たとえば、次のアイテム一覧では、MyFile.cs と MyClass.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
を使用します。