0

在处理异常处理不佳的 vb.net 应用程序时。这是一个很大的痛苦。所以一个想法闪过,如果有可能生成一个库或服务或某种 exe,它将记录应用程序的所有错误,而无需在主机应用程序的某个全局位置编写一行代码/最少的代码。我知道这听起来有点疯狂,但 Windows 事件记录器也是如此。所以我也是这么想的。让我让我更清楚。假设我有一个应用程序 abc.exe,没有一次尝试捕获。我在使用该应用程序时面临很多错误。现在,我不想深入研究应用程序源代码,而是想编写另一个应用程序,该应用程序将运行并记录该应用程序的所有未处理异常,包括托管和 com。

所以请大师们帮助我。我知道 ApplicationDomain 很有用。我在 MSDN 博客上遇到了一个叫 Rick 的人或类似的东西,但我没有再抓到了。因此,一些简单的源代码或部分代码会有所帮助。请在您的答案中添加一些示例代码。

这将是一个很大的帮助。

概括

我想要一个将自己注入到任何应用程序中的应用程序,其中放置了 Injector 的程序集。也就是说,如果我有一个应用程序 D:\xyz\myapp\abc.exe ,如果说我将应用程序作为 exe ,那么如果将它放在 myapp 文件夹中,然后在执行 abc.exe 之后,我的错误记录器应用程序将开始工作并将自身注入当前的应用程序域。如果我将它创建为服务,还告诉我它是否会成为多线程。

4

2 回答 2

1

如果我理解正确,您确实拥有错误处理错误的应用程序源,您可以修改它并重新编译它。

如果是这样,您可能需要查看AppDomain.UnhandledException事件。来自 MSDN 的引用:此事件提供未捕获异常的通知。它允许应用程序在系统默认处理程序向用户报告异常并终止应用程序之前记录有关异常的信息。

如果你去链接有一个你需要添加的代码示例,它只是几行代码,可以全部放在你的应用程序的一个文件中,所以应该很容易添加。

于 2010-09-04T20:35:35.863 回答
0

这个 MSDN 页面 How to: Log Exceptions in Visual Basic准确地描述了您需要什么。总之,它描述了:

  • 如何使用 Visual BasicMy.Application.Log使用 .NET 的内置跟踪侦听器记录异常。
  • 如何UnhandledException在 VB 应用程序中注册 Forms Application 事件。
  • 如何注册 Visual BasicFileLogTraceListener以记录到文件“[User]\Application Data\[CompanyName]\[ProductName]\[ProductVersion][ApplicationName].log”。

这是注册 VB 的应用程序文件配置的示例FileLogTraceListener

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.diagnostics>
        <sources>
            <source name="DefaultSource" switchName="DefaultSwitch">
                <listeners>
                    <add name="FileLog"/>
                </listeners>
            </source>
        </sources>
        <switches>
            <add name="DefaultSwitch" value="Information" />
        </switches>
        <sharedListeners>
            <add name="FileLog"
                type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" 
                initializeData="FileLogWriter" />
        </sharedListeners>
    </system.diagnostics>
</configuration>
于 2010-09-05T10:47:57.020 回答