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

Dav*_*lle 8 vb.net wpf loaderlock

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

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

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

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

edy*_*mtt 3

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

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

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

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