Прежде всего, символьные значения UTF8 идентичны значениям US-ASCII в диапазоне 0-127. Невозможно сказать, был ли файл csproj сохранен как US-ASCII или UTF8, если только файл не содержал не-Engli sh текст, например пути не-Engli sh. Это то, что здесь произошло? Тем не менее, XmlDocument.Save
должен был использовать UTF8 по умолчанию.
Вы можете контролировать, как XmlDocument записывается в поток или файл, используя XmlWriter и XmlWriterSettings. В этом случае вам нужно установить OmitXmlDeclaration :
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
var writer = XmlWriter.Create(projectFilePath, settings);
xmlCsproj.Save(sw);
sw.Close();
Кодировка по умолчанию - UTF8. Чтобы изменить его, вы можете установить для XmlWriterSettings.Encoding другое значение