我正在开发一个多开发人员项目,正在开发的应用程序是通过启动器应用程序启动的,该启动器应用程序传递用户登录的参数,它们的位置等。现在当我调试应用程序时,我设置了断点解析输入参数的代码,我分配用户名变量我的用户名等。
我可以对这些值进行硬编码,但是:
我的问题是:
提前致谢
答案 0 :(得分:1)
当我遇到这样的情况时,我通常会将条件编译和环境变量/ reg键组合在一起。您可以使用这些存储机制来托管您的信息,而无需将其硬编码到应用程序中。
#if DEBUG
if ( null != Environment.GetVariable("CUSTOM_INFO")) {
userName = Environment.GetVariable("CUSTOM_USERNAME");
...
}
#endif
这样它不会影响任何其他开发人员。当然,除非他们想要完成同样的事情。
答案 1 :(得分:0)
添加到JaredPar的回复中,使该类成为部分。
这将使您保持主文件(已签入的文件)的更新。另一个文件(包含IF DEBUG的文件)将是本地&不会办理登机手续。
希望有所帮助。
答案 2 :(得分:0)
奇怪的问题。它是在狗生活之前发布的,但单元测试和测试驱动开发的概念早在2009年就已经很好地建立起来了。有了非常好的工具,比如nunit和testdriven.net。调试器不是正确使用的工具,只会产生白发。
答案 3 :(得分:0)
您可以使用跟踪点设置变量。
设置一个您不想设置变量的断点。右键单击红色字形并选择操作(从键盘上,您可以使用 alt + F9 , c 和某些标签和空格键)。如显示的消息所示,您可以输入一个带有大括号的表达式的字符串。
例如:
2 + 2 = {2 + 2}
,将输出“ 2 + 2 = 4”。 在表达式中,您还可以分配变量:
{myVar = 5}
这确实具有将表达式的结果值打印到“输出窗口”的副作用。
为了避免这种情况,您可以为变量分配一个返回Void的辅助扩展方法:
public static class HelperFunctions
{
public static void AssignTo<T>(this T value, out T variable)
{
variable = value;
}
}
像这样使用
:{"new value".AssignTo(out def)}
这只会将换行符输出到Ouput窗口(根据您的喜好,它可能会变糟或变坏)。
要在不污染输出窗口的情况下分配变量,如果可以在跟踪点的条件中分配变量,那就太好了,但是无论我尝试编写多少个辅助函数,都不会似乎不可能。我看起来好像条件表达式中的变量是沙盒,而动作消息表达式中的变量却没有。
编辑
在Visual Studio 2013中可以在断点条件下分配变量 ,但是在2019年,副作用(如变量分配)将被丢弃:https://developercommunity.visualstudio.com/content/problem/715716/variables-cannot-be-assigned-in-breakpoint-conditi.html