我正在發佈此問題,以便我可以記錄解決方案,因爲我發現解決方案非常棘手且耗時。EntryPointNotFoundException - 在Expression Blend中加載MVVM Light視圖時未找到入口點4
我使用在Silverlight 4項目Laurent Bugnion's優秀MVVM Light Toolkit,我用他的ViewModelLocator模式與Microsoft.Practices.ServiceLocation。 ServiceLocator爲可混合性加載設計時間模型。最初將視圖加載到Expression Blend 4正在工作,設計時數據綁定非常好。這在Blend中完全沒有任何錯誤信息的情況下停止工作。
我用Visual Studio 2010 SP1附加到Blend.exe調試問題。該EntryPointNotFoundException(入口點未找到)異常在這行代碼被拋出:
return ServiceLocator.Current.GetInstance<ExampleViewModel>();
奇怪的是,我能夠加載成功地與我的設計時間在Visual Studio XAML設計在同一視圖數據綁定正常工作。我使用另一個Visual Studio實例將調試器附加到承載XAML設計器的Visual Studio實例,並能夠確認ServiceLocator調用成功執行。
異常詳細信息(堆棧跟蹤,InnerExcetion等)沒有給我任何進一步的線索問題和各種互聯網搜索無益的錯誤消息未能擺脫任何進一步的光芒。
我終於幸運通過使用Visual Studio的即時窗口執行的是造成問題的代碼行的一部分,並得到了更好的錯誤消息:
?ServiceLocator.Current
類型「Microsoft.Practices。 「Microsoft.Practices.ServiceLocation.dll」和「Microsoft.Practices.ServiceLocation.dll」中都存在ServiceLocation.ServiceLocator'
將變更集與以前的代碼進行比較我注意到我已經添加了對GalaSoft.MvvmLight的引用。 Extras.SL4在單獨的Unit Test Framework for Silverlight項目中(它引用了UI項目)。此測試項目引用來自C:\ Program Files(x86)\ Laurent Bugnion(GalaSoft)\ Mvvm Light Toolkit \ Binaries \ Silverlight4的程序集,其中作爲UI項目引用來自.. \ packages \ MvvmLightLibsPreview.4.0.0 \ LIB \ SL4。我曾使用nuget包MvvmLightLibsPreview將MVVM Light添加到客戶端項目。
混合結果 - 錯誤和輸出Windows在任何時候都沒有顯示任何錯誤消息。顯然沒有真正的答案,除非有一些混合故障拍攝技術,這將幫助我更快地找出問題。
非常有趣的主窗口設計數據信息。我不使用nuget,因爲它還不夠成熟,這個例子顯示了它。 nuget成功運行的唯一方法是它接管整個解決方案中每個項目的引用添加機制。在這種情況發生之前,選擇錯誤的軟件包和軟管很容易。不過,它的出現是因爲它們以前沒有解決方案級別的軟件包,這是朝正確方向邁出的一步。 –
@mikepost我不確定這是一個nuget問題。最初在客戶端UI項目中使用了Nuget,之後我添加了一個單元測試Silverlight項目,我手動引用了不同的程序集。如果我在這個單元測試項目中也使用了Add-Package,那麼問題就不會發生。容易造成用戶錯誤,但仍然是用戶錯誤。令人沮喪的是缺乏好的錯誤信息。我以後也只把2和2放在一起,並意識到這個問題導致我的單元測試出現問題,但帶來了不同的錯誤消息。 –