xml - 由于自动加载重复的 xsd 文件,Visual Studio 2012 XML 智能感知被破坏

标签 xml visual-studio-2012 intellisense

简而言之:我可以阻止 Visual Studio 在其内部智能感知引擎中加载某些 xsd 吗?加载某些 xsd 会破坏智能感知。


为了对各种 xml 文档执行输入验证,我使用 xsd。我使用的一些 xsd 文件是标准的,例如 xml.xsd 和各种 xhtml xsd。这些 xsd 文件作为嵌入式资源包含在类库中。

但是,在解决方案中包含这些文件会破坏各种 xml 文件的 Visual Studio 智能感知,即使在不同的项目中也是如此。似乎正在发生的情况是,Visual Studio 自己的 xsd 文件和“自定义”嵌入的 xsd 文件都被加载,可能是因为它们适用于相同的 targetNamespace。但是,这会导致许多警告,例如: 全局属性 'http://www.w3.org/XML/1998/namespace:lang' 已声明。 这对于 xslt 文件尤其烦人,但似乎所有匹配多个模式的 xml 文件都会发生这种情况。 XHTML 是另一个特别有问题的情况,因为只有一个命名空间有多个模式(严格的、过渡的……)。因此,智能感知将停止对打开的 xml 文件起作用。此外,VS 的错误列表中充斥着大量虚假警告,隐藏了潜在有用的警告。

我可以使用 XML > Schemas... 禁用或删除这些架构,但这是一个行不通的解决方案,因为每当我打开不同的 xml 文件时,它们都会重新添加。我每天可能必须删除架构数百次。

是否有任何方法可以将 Visual Studio 配置为不自动加载嵌入式架构,或者一劳永逸地仅加载特定架构?

最佳答案

基于缺乏响应,我猜测这只是一个错误:智能感知根本无法处理这种情况。

我已经提交了错误报告,如果找到解决方案,我将更新此答案:http://connect.microsoft.com/VisualStudio/feedback/details/777572/visual-studio-2012-xml-intellisense-broken-due-to-auto-loading-duplicate-xsd-files

解决方案/解决方法

如果您在本地包含标准 xsd(这几乎可以肯定,因为它们与 Visual Studio 自己的 xsd 相冲突),您可能不会需要对它们进行大量编辑 - 只是将它们作为资源包含在内。因此,我决定将有问题的文件(例如 xml.xsd)重命名为 xml.xsd.intellisensehack。文件扩展名与资源代码无关(您仍然可以像任何其他流一样打开它),但 Visual Studio 不再自动尝试使用该文件作为智能感知架构源。

关于xml - 由于自动加载重复的 xsd 文件,Visual Studio 2012 XML 智能感知被破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14478291/

相关文章:

c# - <example></example> XML 注释标记 : how to see it?

ruby-on-rails - 用于 Rails 的 Netbeans Intellisense

java - textView 拒绝作为 LinearLayout 的 subview 居中

xml - XSL For-Each 循环

visual-studio-2010 - Web 服务器找不到请求的资源 Visual Studio 调试

c++ - Visual Studio & C++ : Use filters as directories

xml - 使用 XSL 转换标签序列

c# - 根据父节点属性值获取子节点属性值

visual-studio-2010 - TFS:是否可以在先前合并期间的源移动之后进行合并?

visual-studio - Visual Studio 2015 IntelliSense 不显示所有方法