VB.NET 2008中的Loader Lock错误(仅限Windows XP?)

时间:2012-06-23 03:50:53

标签: wpf vb.net loaderlock

当我在Windows XP上运行我的应用程序(WPF,VB.net 2008)时,我得到了奇怪的Windows错误。当我在出现错误和调试的机器上安装VS2008时。我有一个加载器锁异常,所以我进入Debug并删除它。但是,当它安装在机器上时,我仍然会收到错误。

安装应用程序时是否有办法删除Loader Lock Exception。我确实理解它可能不是最好的解决方案,但似乎只有当我使用ReportViewer启动WindowsElementHost并且这导致问题时才会发生这种情况,因此我真的不知道还有什么可以解决它。

与2003年一样,所有版本的XP都存在这个问题。

在Windows 7和Vista中,我在调试和安装的产品时从未遇到过该错误。同样适用于2008和2008R2。

1 个答案:

答案 0 :(得分:3)

我做了一些研究,下面你可以找到我的猜测:

  • 也许这是Report Viewer控件本身的一个错误,您应该更新到更高版本。我注意到2012年12月发布了一个新版本(参见this post),据说可以在.NET 3.5和4.0上运行(因此它应该适用于VB 2008,请参阅download page);
  • 我注意到Report Viewer 2008 SP1需要.NET 3.5 SP1(请参阅download page) - 也许过时的版本会触发您看到的异常;
  • 可能Windows XP未更新到最新的Service Pack或版本错误 - 再次报表查看器2010 SP1需要Windows XP SP3(请参阅download page)并且Report Viewer 2012无法在Windows XP Starter Edition上运行;
  • 也许它是报表查看器使用的库导致此异常(尤其是混合模式程序集) - 从这个意义上说,转储或堆栈跟踪会有所帮助;
  • 在Visual Studio Tools for Office论坛中thread中有一个全面的答案,列出了几个可以理解这个问题的资源;
  • 上一个链接表明在某些情况下忽略此锁定是安全的。如果在Visual Studio下使用Loader Lock MDA进行测试,您会看到没有问题,您可以使用此blog post中的说明禁用生产机器中的MDA - 基本上它涉及设置环境变量并添加一些到app.config文件的行(另请参阅Loader Lock MDA的documentation以查看新行应该是什么样子)。我没有尝试过,但我认为它可能对您有用,作为最后的解决方案 - 只需确保彻底测试您的应用程序,以避免不良副作用。

为了获得更多帮助,我建议您指定:

  • 您正在使用的报告查看器的版本;
  • 您要定位的.NET Framework版本(特别是包括Service Pack);
  • 为Windows XP安装了什么Service Pack;
  • 您可以收集的任何堆栈跟踪或调试信息。