C# 是否强制编译器接受未使用的字符串?

C# 是否强制编译器接受未使用的字符串?,c#,.net,decompiler,C#,.net,Decompiler,我正在进行crackme挑战,要求用户反编译二进制文件 我试图包括以下内容,以避免尝试使用字符串反转二进制文件的用户出错: const string pointless = "Strings would be too easy"; 不幸的是,如果没有在我的代码中的某个地方引用它,冗余代码将在编译时被删除。有什么方法可以让编译器包含它吗?使用变量是将变量保留在编译代码中的唯一方法。现在,下一件事是不要在编译代码中使用using语句 最后我们有两个任务 使用变量 然后不要在编译代码中使用代码来获取

我正在进行crackme挑战,要求用户反编译二进制文件

我试图包括以下内容,以避免尝试使用字符串反转二进制文件的用户出错:

const string pointless = "Strings would be too easy";

不幸的是,如果没有在我的代码中的某个地方引用它,冗余代码将在编译时被删除。有什么方法可以让编译器包含它吗?

使用变量是将变量保留在编译代码中的唯一方法。现在,下一件事是不要在编译代码中使用using语句

最后我们有两个任务

使用变量 然后不要在编译代码中使用代码来获取它, 你知道如果你使用了,你肯定会在编译代码中得到它。我们将在Debug类中使用该变量,因此只有当您将其编译为调试模式时,您才能获得该变量,而如果您将代码编译为发布模式,则无法使用variablecode获得该变量。详情如下—

const string pointless = "Strings would be too easy";
Debug.WriteLine(pointless);
现在,由于使用了该变量,因此不会从编译格式中删除它。现在,如果您将代码编译为debug,您将得到这个debug.WriteLinepointless

但是现在将代码编译为发布模式,您将获得变量,而不是这个Debug.WriteLinepointless


希望能有帮助

你可以毫无意义地引用它。@RaymondChen我同意,但我想知道是否有更好的方法!