2012-03-20 77 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 
} 

希望這會有所幫助。