是否在Visual Studio中将XML文件自动附加到XSD架构?

是否在Visual Studio中将XML文件自动附加到XSD架构?,xml,visual-studio,xsd,Xml,Visual Studio,Xsd,我刚刚发现了VisualStudio自动生成XSD模式的美妙之处。* 有没有一种简单的方法让VS自动将具有特定名称的文件附加到现有XSD模式?因此,如果我的myconfig.xml文件分散在一个项目(或多个项目)中,我希望它们总是根据myconfig.xsd进行验证,而不必打开每个xml文件并手动关联它。这可能吗 *对于那些不熟悉的人:打开XML文件、XML/CREATESchema和 它基于 它在XML文件中看到的内容。你可以 然后将相同的XSD附加到另一个XSD 通过打开该文件并 选择XML

我刚刚发现了VisualStudio自动生成XSD模式的美妙之处。*

有没有一种简单的方法让VS自动将具有特定名称的文件附加到现有XSD模式?因此,如果我的
myconfig.xml
文件分散在一个项目(或多个项目)中,我希望它们总是根据
myconfig.xsd
进行验证,而不必打开每个xml文件并手动关联它。这可能吗

*对于那些不熟悉的人:打开XML文件、XML/CREATESchema和 它基于 它在XML文件中看到的内容。你可以 然后将相同的XSD附加到另一个XSD 通过打开该文件并 选择XML/Schemas并选择 从项目中选择适当的模式。然后获得所有元素和属性名称、必需元素和属性等的intellisense和验证


更新:我想我不是很清楚

当我在项目中的任意位置创建一个新的
web.config
文件时,我不会手动为其分配模式。XML中没有指定名称空间。然而,Visual Studio自动知道如何使用
DotNetConfig.xsd

大概VisualStudio有一个映射,它将名为
web.config
的文件分配给
DotNetConfig.xsd


现在,假设我希望所有名为
DbSchema.xml
的文件自动使用我创建的名为
DbSchema.xsd
的模式。有没有办法做到这一点?

任何XML文档中的任何标记都可以引用模式


请参见以下示例:

如果您的架构与XML文件位于同一工作区(不一定是项目),只要您的文件具有名称空间声明,Visual Studio就会自动使用它们进行自动完成和验证

您甚至不需要输入schemaLocation属性

请尝试以下操作:

  • 双击XML文件将其打开
  • 在现在动态显示的菜单项“XML”中,单击“模式…”。这将显示从名称空间到模式的当前映射
若要检查它是否工作,请尝试在某处放置一个开角括号,它应该建议元素名称


编辑:这也适用于不带名称空间的XML文件,但您可能需要向%Install%\XML\Schemas添加新的架构目录。在底部附近,它描述了如何使用“Association”元素通过扩展来关联模式。

使用时,可以很容易地添加诸如http/../xxx.xsd或../Common/xxx.xsd之类的名称空间

<configuration>

  <configSections>
    <section name="RouteConfigSection" type="RouteSection.RouteConfigSection,RouteSection" />
  </configSections>

  <RouteConfigSection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="RouteConfigSection.xsd">
    <routes>...

你有没有想过?如果是,请分享。
public class RouteConfigSection : ConfigurationSection
{
    [ConfigurationProperty("routes", IsDefaultCollection = false)]
    public RouteConfigElementCollection Routings { get { return (RouteConfigElementCollection)base["routes"]; } }

    //https://github.com/bspell1/NLogEx/blob/master/NLogEx.Mvc/Config/Config.cs
    [ConfigurationProperty("xmlns")]
    private String Ns1 { get { return null; } }

    [ConfigurationProperty("xmlns:xsi")]
    private String Ns2 { get { return null; } }

    [ConfigurationProperty("xsi:noNamespaceSchemaLocation")]
    private String Ns3 { get { return null; } }
}