我正在生成由 VS2010 和 Mono 的 xbuild (2.10.2.0) 构建的 C# 源代码。这通常工作得很好,到目前为止我只有一个兼容性问题,在那种情况下,我使用了一个明确指定为未定义行为的“功能”(所以是过失)。
现在我遇到了一个问题,在 C# 源代码中的字符串文字中有特殊字符。我正在以 UTF-8 生成源文件,我正在测试的字符是德语锐利 s: 0xC39F。这是由代码写入 latin1 中的一个文件,0xDF
当使用 VS 构建可执行文件(这是我想要的)和0xC33F
使用 xbuild 构建时,它最终会结束。
据我所知,使用 .NET 还是使用 Mono CLR 运行可执行文件似乎并不重要。
我目前的怀疑是 xbuild 没有将源代码读取为 UTF-8,因此编译后的代码在字符串文字中已经有错误的字符。有没有办法明确告诉它?我找不到任何东西,xbuild /?
xbuild文档也不是特别全面。如果我只是错过了记录此内容的正确页面,当然,只需一个链接就足够了。
所有实验均在 Win7 x64 上进行。
编辑1:为了澄清,我使用十六进制编辑器来确认源代码文件中的字符是真的0xC39F
,用VS2010编译时0xDF
写的字符是,用xbuild编译时写的字符是0xC33F
。