Console.WriteLine发布模式编译

本文关键字:模式 编译 WriteLine 布模式 Console | 更新日期: 2023-09-27 18:20:24

我正在用C#编写一个相当大的项目。这是一种游戏保护系统,可以防止玩家在多个层面作弊,包括本地隧道和使用多种算法的高级网络加密。

问题是关于Console.WriteLine方法。我在程序中经常使用它,因为如果没有正确的输出,很难在多个线程上跟踪进度。有没有什么方法可以让人们在运行时捕获这些输出?它包含一些敏感信息。该应用程序是在发布模式下构建的,稍后会进行模糊处理(构建后脚本)。

我应该使用Debug.WriteLine方法吗?保护应用程序不被逆向工程是我的首要任务。我读到,在发布模式下,Debug的方法甚至没有编译成代码。另一方面,Console.WriteLine有一些很酷的重载。有没有什么方法可以让我保留Console方法并保护它免受未经授权的访问?

Console.WriteLine发布模式编译

如果在发布版本中根本不需要控制台输出,则Debug类中的所有成员都标记有ConditionalAttribute,这意味着它不会包含在发布版本内。所以,是的,只要使用Debug.WriteLine,如果这是你想要的。

在条件编译中使用类似NLog的东西,这样它就不会包含在Release构建中。然后,您可以在调试时跟踪日志,并在不泄露给用户的情况下获得相同的信息。

或者,如果您更喜欢使用Console.WriteLine,只需用条件编译包装对它的调用,如下所示:

#if DEBUG
    Console.WriteLine("Debug version");
#endif

与Debug类方法一样,除了Debug构建之外,您可以编写编译器忽略调用的方法。他们只需要返回void,所以省略调用没有任何效果。请参见条件属性。与条件编译相比,优势在于您不需要在代码中乱放条件指令。

如果您喜欢Console方法,可以将它们封装在自己的类中。