8

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

有没有办法在安装应用程序时删除加载程序锁定异常。我知道它可能不是最好的解决方案,但似乎只有当我使用 ReportViewer 启动 WindowsElementHost 时才会发生这种情况,这会导致问题,所以我真的不知道还能用它做什么。

所有版本的 XP 都有这个问题,就像 2003 一样。

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

4

1 回答 1

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 论坛中的这个线程中有一个全面的答案,其中列出了一些资源来理解这个问题;
  • 上一个链接表明在某些情况下忽略此锁是安全的。如果在禁用加载程序锁定 MDA 的 Visual Studio 下进行测试,您发现没有问题,您可以使用此博客文章中的说明在生产机器中禁用 MDA——基本上它涉及设置环境变量并添加一些行到app.config文件(另请参阅 Loader Lock MDA 的文档以查看新行的外观)。我还没有尝试过,但我认为它作为最后的解决方案可能对您有用 - 请务必彻底测试您的应用程序以避免不希望的副作用。

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

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