使用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()方法被调用发生。这里是异常助手的截图:
我switch this off。因为它警告应用程序可能挂起,如果你的程序没有挂起,那么你可能没问题。
问题可以尽管以同样的方式来解决,通过关闭 MDA:
调试 - >例外 - >托管调试助手
,并取消选中LoaderLock项目。
我在使用C#应用程序中的某些外部DLL时也遇到了问题LoaderLock
。
- 为.NET 3.5我只是取消
Thrown option
在Exceptions menu
(Loader lock error) - 为.NET 4.0我
app.config
我现在正在使用它,它运行得很好。 VS 2012,v4.5和Sql CE 4.0有问题。这里有一个链接更多的信息:http://stackoverflow.com/questions/1604663/what-does-uselegacyv2runtimeactivationpolicy-do-in-the-net-4-config/2467255#2467255 –
添加
<startup useLegacyV2RuntimeActivationPolicy="true">
或者,VS2012是比更谨慎VS2010关于不安全的构造。 – nneonneo没有调用堆栈来看看这么难以帮助你。一般来说,LoaderLock倾向于产生错误的警告。您可以使用Debug + Exceptions,MDAs,LoaderLock复选框将其关闭。 –
@Hans,似乎没有调用堆栈(我在我的文章中添加了Exception Assistant的截图)。我假设问题出现在非托管代码中。 – Darren