0

目前在我的 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

4 回答 4

1

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

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

干杯!

于 2009-09-28T16:53:15.867 回答
0

这可能是它正在寻找某些东西或者它正在重新编译代码。

选择输出标签以查看编译活动,然后查看它是否在下次占用时正在执行此操作。

在某些项目中,如果我们通过按下停止调试按钮而不是退出程序来退出调试模式,就会出现这种情况。

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

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

于 2009-09-24T19:57:47.993 回答
0

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

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

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

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

于 2009-09-30T03:38:43.480 回答
0

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

于 2009-09-28T15:49:50.737 回答