2011-03-25 230 views
0

我正在使用Mvvm Light(最新版本)構建Silverlight 4應用程序,而VS 2010每5分鐘甚至更少崩潰。所以這是不可能的。Visual Studio崩潰

我相信這是因爲我正在做或者我的MVVM實現有問題。

我在設計師有時會得到這個錯誤。

An unhandled exception has occurred: 

[Xml_CannotFindFileInXapPackage] 
Arguments: ServiceReferences.ClientConfig 
Debugging resource strings are unavailable. Often the key and arguments provide sufficient information to diagnose the problem. See http://go.microsoft.com/fwlink/?linkid=106663&Version=4.0.60129.0&File=System.Xml.dll&Key=Xml_CannotFindFileInXapPackage 
    at System.Xml.XmlXapResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn) 
    at System.Xml.XmlReaderSettings.CreateReader(String inputUri, XmlParserContext inputContext) 
    at System.Xml.XmlReader.Create(String inputUri, XmlReaderSettings settings, XmlParserContext inputContext) 
    at System.ServiceModel.Configuration.ServiceModelSectionGroup.GetSectionGroup() 
I don't know if this is related with the crash. 

..And I found this error in the event viewer: 
Application: devenv.exe 
Framework Version: v4.0.30319 
Description: The process was terminated due to an unhandled exception. 
Exception Info: System.ObjectDisposedException 
Stack: 
    at System.Windows.Threading.Dispatcher.FastInvoke(System.Windows.Threading.DispatcherPriority, System.Delegate, System.Object[]) 
    at System.Net.Browser.AsyncHelper.CheckUseLowLatencyNetworking() 
    at System.Net.Browser.AsyncHelper.BeginOnUI(System.Threading.SendOrPostCallback, System.Object) 
    at System.Net.Browser.BrowserHttpWebRequest.Abort() 
    at System.ServiceModel.Channels.HttpOutput+WebRequestHttpOutput.Abort(System.ServiceModel.Channels.HttpAbortReason) 
    at System.ServiceModel.Channels.HttpChannelFactory+HttpRequestChannel+HttpChannelAsyncRequest.AbortSend() 
    at System.ServiceModel.Channels.HttpChannelFactory+HttpRequestChannel+HttpChannelAsyncRequest.OnSendTimeout(System.Object) 
    at System.Threading._TimerCallback.TimerCallback_Context(System.Object) 
    at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 
    at System.Threading._TimerCallback.PerformTimerCallback(System.Object) 

任何幫助將不勝感激,在此先感謝。

+0

你也使用WCF嗎?您是否意外地嘗試在設計模式下檢索數據? – Robaticus 2011-03-25 19:33:36

+0

檢查項目中是否存在ServiceReferences.ClientConfig文件,如果存在,打開該文件的屬性並設置BuildAction = Content – vorrtex 2011-03-25 19:52:54

回答

0

我有一個類似的問題,因爲每當我在設計器中打開一個XAML文件時,VS都會崩潰。原來,在對我的Model進行了一些更改之後,我的設計時數據通過屬性驗證器並通過一個例外。我最好的猜測是,在ViewModel中發生了一件非常錯誤的事情,它被VS實例化爲設計師的後盾。

0

@Robaticus,是的我正在使用WCF,但我不知道我是否「意外地」試圖在設計模式下檢索數據。我不知道在設計模式下MVVM Light是做什麼的,也許它試圖做到這一點?我曾多次使用Silverlight的WCF,而我甚至不知道如何在設計模式下從WCF中檢索數據。

@vortex,我檢查了Servicereference.clientconfig的屬性,它已經設置爲內容。

謝謝你們。

0

您應該修改代碼以處理在Visual Studio下處於設計模式並且您不希望Visual Studio Visual Designer運行任何自定義WCF代碼或任何可能失敗的事情的情況案件。

下面是對這個問題有好的文章:Detecting design time mode in WPF and Silverlight

這也有可能是的Visual Studio 2010 SP1已經修復了這個問題(至少處理得更加優雅...)

0

至於我知道Simon,這是由MVVM Light工具包管理的。實際上,在ViewModel類的構造函數中,我有一個檢查: /// ///初始化MainViewModel類的新實例。 /// public MainViewModel() if(IsInDesignMode) {Code}在Blend中運行 - >創建設計時數據。

 } 
     else 
     { 
      GetDataFromWebService(); 
     } 

謝謝你的方式,確實很不錯的文章。