我们正在开发一个包含登录机制的程序。为了方便起见,在使用调试构建时会自动输入用户凭据。
#if DEBUG
UsernameTextBox.Text = "someName";
PasswordBox.Password = "somePassword";
据我所知,这不会在发布版本中编译,并且可以安全地留在代码中(只要用户只获得发布版本(。这是真的吗?
绝对不是!
首先,我们来看一下:https://security.stackexchange.com/questions/191590/why-is-storing-passwords-in-version-control-a-bad-idea
解决方法:如何避免在版本控制中存储密码?
如果你的问题是它是否可以从可执行文件或dll中检索,答案是否定的。
当C#编译器遇到#if指令,然后是#endif指令时,只有在定义了指定符号的情况下,它才会编译指令之间的代码。与C和C++不同,不能为符号指定数值。C#中的#if语句是布尔语句,仅测试符号是否已定义。
代码甚至没有编译,因此没有包含在可执行文件中。