从普通的旧 C# 对象生成 XSD 时,Visual Studio 提供的 xsd.exe 工具是否会生成 SchemaLocation 属性(在 xs:import 中)?
我发现我生成的 XSD 无效,因为 xs:import 将导入命名空间并且不提供提示以下的相对架构位置值
命名空间“urn:company-event-namespace”的导入架构未解析。
如this anwser所示,您可以手动添加添加属性。因为 xsd 工具会生成分部类,所以您可以在单独的文件中添加此属性,因此您不必修改生成的文件。
public partial class Gpx
{
[XmlAttribute("schemaLocation", Namespace = XmlSchema.InstanceNamespace)]
public string xsiSchemaLocation = "http://www.topografix.com/GPX/1/1 " +
"http://www.topografix.com/GPX/1/1/gpx.xsd";
}
如您所见,它不会生成该属性。这可能与以下事实有关:如果该属性存在于它正在读取的模式中,它将不会使用该属性。