我正在开发一个生成程序集的项目。我刚刚注意到正在生成一个附加程序集 *.XmlSerializers.dll。为什么会自动生成这个文件以及它的用途是什么?
在 .NET 实现中,XmlSerializer 生成用于序列化/反序列化类的临时程序集(出于性能原因)。它可以即时生成(但每次执行都需要时间),也可以在编译期间预先生成并保存在您所询问的程序集中。
您可以在项目选项中更改此行为(分别是选项卡Compile -> Advanced Compile Options -> Generate serialization assembly、Auto 或 On)。项目文件中对应的元素为GenerateSerializationAssemblies,例如<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
。
使用打开的 RegexOptions.Compiled 选项,您会得到与 RegEx 实例相同的结果。
我不是 .NET CLR 专家,很抱歉缺乏精确的技术细节。
不确定您的用例,但我使用过:
private static string ChangeRootName(string xmlString, string newRootName)
{
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlString);
// Create a new root element with the specified name
XmlElement newRootElement = xmlDoc.CreateElement(newRootName);
// Move all child nodes from the old root to the new root
while (xmlDoc.DocumentElement.HasChildNodes)
{
newRootElement.AppendChild(xmlDoc.DocumentElement.FirstChild);
}
// Replace the old root with the new root
xmlDoc.ReplaceChild(newRootElement, xmlDoc.DocumentElement);
return xmlDoc.OuterXml;
}
使用普通的 XmlSerialize 就不会出现此问题。