在 C# 控制台应用程序中有没有一种方法可以在主函数之前自动 运行 一段代码

Is there a way in c# console applications to automatically run a piece of code before main function

我最近遇到了用于 asp.net 应用程序的 preapplicationstart 方法。对于控制台应用程序,我需要类似的东西。我有一个外部日志记录 dll。我想配置日志记录,以便在引用 dll 时自动执行一些日志记录代码。我只需要在执行任何其他代码之前调用 class 构造函数。任何帮助将不胜感激。

Like Application Insights 在添加对 mvc 应用程序的引用和将检测密钥添加到配置文件时自动收集性能计数器。对于控制台应用程序,我需要类似的东西。

包含 Main 的 class 的静态初始值设定项中的任何代码都将在进入 Main 之前执行:

public class MyConsoleApp {
    static MyConsoleApp() {
        Console.WriteLine("I run before Main");
    }
    public static void Main(string[] args) {
        Console.WriteLine("Main");
    }
}

Demo.

如果你只是在输入Main之前搜索执行代码的方法,dasblinkenlight已经给了你答案。但是如果你只是想通过引用一个库来执行代码,我认为这根本不可能。

您库中的代码仅在使用库中的内容(甚至是静态构造函数)时才会执行。如果您添加断点然后等待执行直到它们完全变红,您可以观察您的库加载时间。

额外机会:

如果您不想编辑应用程序的代码,请添加一个应用程序,它只调用您的记录器初始化代码,然后是原始应用程序的 Main