2012-10-15 67 views
22

我有幾個使用SQL CE 4.0和Entity Framework的MVC項目。由於移動到Visual Studio 2012我不斷收到以下錯誤(不是每一個時間,但頻繁)檢測使用Visual Studio 2012檢測到LoaderLock

LoaderLock

試圖在OS加載程序鎖內管理的執行。不要試圖在DllMain或圖像初始化函數中運行託管代碼,因爲這樣做會導致應用程序掛起。

如果我回到使用VS 2010,這使我相當確定這是一個與Visual Studio的問題,而不是我的代碼,但我希望有人來確認對我來說沒有發生錯誤!

編輯

的問題似乎總是時的DbContext的Dispose()方法被調用發生。這裏是異常助手的截圖:

Exception Assistant

+1

添加<startup useLegacyV2RuntimeActivationPolicy="true">或者,VS2012是比更謹慎VS2010關於不安全的構造。 – nneonneo

+2

沒有調用堆棧來看看這麼難以幫助你。一般來說,LoaderLock傾向於產生錯誤的警告。您可以使用Debug + Exceptions,MDAs,LoaderLock複選框將其關閉。 –

+1

@Hans,似乎沒有調用堆棧(我在我的文章中添加了Exception Assistant的截圖)。我假設問題出現在非託管代碼中。 – Darren

回答

12

switch this off。因爲它警告應用程序可能掛起,如果你的程序沒有掛起,那麼你可能沒問題。

問題可以儘管以同樣的方式來解決,通過關閉 MDA:

調試 - >例外 - >託管調試助手

,並取消選中LoaderLock項目。

4

我在使用C#應用程序中的某些外部DLL時也遇到了問題LoaderLock

  • .NET 3.5我只是取消Thrown optionExceptions menuLoader lock error
  • .NET 4.0app.config
+1

我現在正在使用它,它運行得很好。 VS 2012,v4.5和Sql CE 4.0有問題。這裏有一個鏈接更多的信息:http://stackoverflow.com/questions/1604663/what-does-uselegacyv2runtimeactivationpolicy-do-in-the-net-4-config/2467255#2467255 –