2012-03-20 42 views
3

我似乎擅长在启动时使Expression Blend 4崩溃。这个问题似乎与初始化静态托管和非托管变量的死锁有关,因为Blend首先打开了我的解决方案,该解决方案包含非托管C++和托管代码项目的混合。 Blend崩溃实例化我的ViewModel(我在App.xaml中使用MVVM Light,但我认为这不是真正相关的)。本页详细描述了如何检测和纠正这种潜在的死锁:Initialization of Mixed Assemblies如何清除Expression Blend 4缓存的解决方案信息?

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

我的问题是:如何重置混合的状态,就好像它从来没有见过这个解决方案?

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

+0

你删除了你的bin/obj文件夹并重建了吗? – 2012-03-20 19:30:55

+0

您是否尝试过删除“C:\ Users \用户名\ AppData \漫游\微软\表达\混合使用的SL5混合预览,我有表达的文件夹在本地和漫游的Win7的X64。 – 2012-03-20 22:05:04

回答

2

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

所以有找到一个潜在的问题,有两种方式。

评论了在离开的InitializeComponent(您的UI ellements的构造函数的所有代码),找出有问题的代码

或者

安装Visual Studio调试器融为一体,然后重新生成项目或打开XAML文件这craheshes混合

做第二个选项,你会去调试 - >附加到进程 - >从列表中选择混合。

当你确定哪些崩溃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 
} 

希望这会有所帮助。