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

3
我似乎很擅长让Expression Blend 4在启动时崩溃。问题似乎与初始化静态托管和非托管变量相关,因为Blend在打开我的混合非托管C++和托管代码项目的解决方案时就崩溃了。Blend在实例化我的ViewModel时崩溃(我在App.xaml中使用MVVM Light,但我认为这并不是真正相关的)。本页面详细描述了如何检测和纠正这种潜在死锁:混合程序集的初始化 由于我同时在VS2010和Blend4中编写代码和标记,有时会意外地创建这种情况,此后,当我加载我的解决方案时,Blend就会崩溃。即使我在VS2010中纠正了这个问题,Blend也仍然会在启动时崩溃(VS2010似乎对带有相同解决方案文件的崩溃免疫)。Blend启动崩溃可能会发生在x86和x64系统上。即使我尝试删除所有输出目录,Blend启动崩溃也仍然存在。 即使我重命名“C:\Users\username\AppData\Local\Microsoft\Expression\Blend”,Blend启动崩溃也仍然存在。
我的问题是:如何将Blend重置为从未看到过此解决方案的状态?
我假设这将是有效的解决方法,因为如果我从源代码控制下载一个新的、新鲜的副本,其中托管/非托管问题得到了修复,它可以在Blend4中加载、构建和运行得非常好。

你已经删除了bin/obj文件夹并重新构建了吗? - Chris W.
你尝试过删除“C:\Users\username\AppData\Roaming\Microsoft\Expression\Blend”吗?在Win7 x64上使用SL5的Blend Preview时,我在本地和漫游文件夹中都有Expression文件夹。 - Mike Post
1个回答

2
主要原因是在初始化UI组件时,Blend实际上运行了它们的构造函数,这可能包含一些代码,例如访问数据库,而Blend不支持数据库访问,所以可能会崩溃。
因此有两种方法来找到潜在问题。
注释掉UI元素构造函数中除InitializeComponent()之外的所有代码,以查找有问题的代码;
或者
将Visual Studio调试器连接到Blend,然后重新构建项目或打开导致Blend崩溃的XAML文件。
要执行第二个选项,您可以进入调试器->附加到进程->从列表中选择Blend。
当您确定导致Expression Blend崩溃的代码后,只需使用if语句停止执行该代码的Blend,如果不是,请继续运行。类似于以下内容:
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
}

希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接