如何清除Expression Blend 4缓存的解决方案信息?

时间:2012-03-20 00:46:08

标签: expression-blend blend

我似乎善于使Expression Blend 4在启动时崩溃。这个问题似乎与初始化静态托管和非托管变量的死锁有关,因为Blend首先打开我的解决方案,其中包含非托管C ++和托管代码项目。 Blend崩溃实例化我的ViewModel(我在App.xaml中使用MVVM Light,但我认为这不是真的相关)。此页面详细介绍了如何检测并纠正此潜在的死锁:Initialization of Mixed Assemblies

由于我同时在VS2010和Blend4中编写代码和标记,我有时会意外地创建这种情况,然后在加载我的解决方案时Blend崩溃。即使我在VS2010中纠正了问题,Blend启动崩溃仍然存在(VS2010似乎不会在同一解决方案文件崩溃时崩溃)。 Blend启动崩溃可能发生在x86和x64系统上。即使我尝试删除所有输出目录,Blend启动崩溃仍然存在。即使我重命名“C:\ Users \ username \ AppData \ Local \ Microsoft \ Expression \ Blend”,Blend启动崩溃仍然存在。

我的问题是:如何将Blend重置为某种状态,就像之前从未见过这种解决方案一样?

我认为这将是一个有效的解决方法,因为如果我从源代码控制下载一个新的,我的源代码的新副本并修复了托管/非托管问题,它会在Blend4中加载,构建并运行得很好。

1 个答案:

答案 0 :(得分:2)

Blend崩溃的主要原因是,当Intialising UI组件实际运行它们的构造函数时,它可以有一些代码,例如访问数据库,Blend不支持数据库访问,因此它可能会崩溃。

因此,有两种方法可以找到潜在的问题。

注释除了InitializeComponent()之外的UI元素的构造函数中的所有代码,以找出有问题的代码

或者

将Visual Studio调试器附加到Blend,然后重建项目或打开混合的XAML文件

要做第二个选项,你会去调试器 - >附加到流程 - >从列表中选择Blend。

当你识别出崩溃的代码时,Expression Blend只有一个if语句,如果它是试图执行它的混合,并且不是只运行它,它将停止运行代码。所以像这样:

if(DesignerProperties.IsInDesignModeProperty)
{
  // This code will run when Blend renders the controls
}
else
{
  // This code will run when you are running application on it's own
}

希望这有帮助。