VS2010とMonoのxbuild(2.10.2.0)の両方でビルドされているC#ソースコードを生成しています。これは一般的に非常にうまく機能します。これまでのところ、互換性の問題は1つしかありません。その場合、未定義動作(mea culpa)として明確に指定されている「機能」を使用していました。
現在、C#ソースコードの文字列リテラルに特殊文字が含まれているという問題が発生しています。UTF-8でソースファイルを生成しています。テストしている文字はドイツ語のシャープs:0xC39Fです。これは、コードによってlatin1のファイルに書き込まれ0xDF
、実行可能ファイルがVS(これが必要なもの)でビルドされ0xC33F
たときとxbuildでビルドされたときのようになります。
私が見る限り、実行可能ファイルを.NETで実行するか、MonoCLRで実行するかは問題ではないようです。
私の現在の疑いは、xbuildがソースコードをUTF-8として読み取っていないため、コンパイルされたコードの文字列リテラルにすでに間違った文字が含まれていることです。明示的に伝える方法はありますか?何も見つかりませんでしxbuild /?
た。xbuildのドキュメントは特に包括的ではありません。これが文書化されている正しいページを見逃した場合は、もちろんリンクだけで十分です。
すべての実験はWin7x64で実行されました。
編集1:明確にするために、16進エディターを使用して、ソースコードファイル内0xC39F
の文字が実際に、VS2010でコンパイルされたときに0xDF
書き込まれた文字が、xbuildでコンパイルされたときに書き込まれた文字がであることを確認しました0xC33F
。