使用Visual Studio 2012检测到LoaderLock

问题描述:

我有几个使用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

switch this off。因为它警告应用程序可能挂起,如果你的程序没有挂起,那么你可能没问题。

问题可以尽管以同样的方式来解决,通过关闭 MDA:

调试 - >例外 - >托管调试助手

,并取消选中LoaderLock项目。

我在使用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 –