添加XMLNS会导致VS失败

时间:2009-09-08 00:43:04

标签: wpf xaml visual-studio-2008 xml-namespaces

目前在我的XAML编辑器视图中,我经常会遇到大约每次3秒的抓取剧集。我已经能够缩小它自定义命名空间的原因。

默认情况下,我的页面有2个默认的XMLNS声明:

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
</Page>

这很好用,没有抓住。但是,只要我在应用程序中为控件添加XMLNS,它就会开始占用。

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    
    xmlns:controls="clr-namespace:MyNamespace.Controls">
</Page>

它不仅仅针对该命名空间。我尝试了各种各样的命名空间组合。基本上任何指向MY命名空间的XMLNS都会导致此问题。 我不确定如何诊断这个问题。有什么指针吗?

我们找到了解决方案。我们引用了一个大小约为7mb的Microsoft程序集(用于Web浏览器的ACtiveX)。删除后,一切都加快了。我们现在正在研究抽象该程序集的方法,以便它可以存在于运行时文件夹中,但不需要从项目中引用它。谢谢大家的意见。

4 个答案:

答案 0 :(得分:1)

首先,我们应该了解在Visual Studio中关闭引号时会发生什么。它只是一个程序(虽然很好) - 调试它/配置它。

  • 您是否有任何其他插件 安装?把它们关掉。
  • Turn off Intellisense。
  • MS Expression Blend会发生什么?它抓住了吗?
  • 关闭所有防病毒软件。
  • 运行Process Monitor并跟踪VS的情况。文件名/注册表项解析是否有任何错误?
  • 如果没有任何帮助,请在Visual Studio进程中使用分析器。
  • 如果没有任何帮助,请在StackOverflow上写下您的问题。哦。坚持,稍等。你已经这样做了。让我们等待更多回复:)!

干杯!

答案 1 :(得分:0)

这可能是因为它正在寻找或正在重新编译代码。

选择输出标记以查看编译活动,然后查看它是否是下次扫描时的作用。

在某些项目中,如果我们通过按下“停止调试”按钮而不是退出程序退出调试模式,则会出现此行为。

此外,在使用带有WPF的DataGrid控件时,已经报告了Visual Studio挂起的几个错误,它可能与此有关。这是一对夫妇:

http://wpf.codeplex.com/WorkItem/View.aspx?WorkItemId=10542 https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=420621

答案 2 :(得分:0)

您是否正在运行实时病毒扫描程序?当VS需要编译代码时,这些通常会导致性能低下......

答案 3 :(得分:0)

一个合理的猜测是,这种行为与VS的XAML编辑器试图为使用clr-namespace声明的节点提供 Intellisense 有关。这是clr-namespaces和其他类型命名空间之间的所有区别之一(其中URI仅被视为唯一字符串,但不会尝试断言底层XML语言的定义。)

一个可能的解决方法是在xaml编辑阶段在伪造的URI下定义xmlns前缀(因此放弃来自intellisense的任何提示),并为项目的其他阶段恢复到正确的clr-namespace。

此外,可能将assembly = xxxx添加到命名空间声明可能会有所帮助。即使有问题的程序集是当前应用程序的程序集,这可能会使编辑器和相关的智能感知器有些犹豫。

另一个反直觉的解决方法可能是将这些控件放在单独的程序集中,因为这可以使系统免于Intellisense尝试从源代码动态推断类型结构,所有这些相关的hickups例如由后台轮询更改等引起(我不知道它试图这样做,但有时,工具变得非常聪明,但也导致CPU或I / O块的那种你描述