Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio Visual Studio调试器-自动变量分配_Visual Studio_Visual Studio 2008_Debugging - Fatal编程技术网

Visual studio Visual Studio调试器-自动变量分配

Visual studio Visual Studio调试器-自动变量分配,visual-studio,visual-studio-2008,debugging,Visual Studio,Visual Studio 2008,Debugging,我正在从事一个多开发者项目,正在开发的应用程序是通过一个launcher应用程序启动的,该应用程序传递参数,如用户登录、位置、,现在,当我调试应用程序时,我在解析输入参数的代码上设置了一个断点,并分配用户名变量my username等 我可以硬编码这些值,但: 我认为这是不好的做法 我担心该文件会被我们的VCS检查,并产生灾难性的连锁反应 多个开发人员正在项目中工作,因此硬编码我的姓名、位置分配等实际上不是一个选项 我不能使文件只读,因为它是在积极的发展,我不断需要得到更新版本的文件说 我的

我正在从事一个多开发者项目,正在开发的应用程序是通过一个launcher应用程序启动的,该应用程序传递参数,如用户登录、位置、,现在,当我调试应用程序时,我在解析输入参数的代码上设置了一个断点,并分配用户名变量my username等

我可以硬编码这些值,但:

  • 我认为这是不好的做法
  • 我担心该文件会被我们的VCS检查,并产生灾难性的连锁反应
  • 多个开发人员正在项目中工作,因此硬编码我的姓名、位置分配等实际上不是一个选项
  • 我不能使文件只读,因为它是在积极的发展,我不断需要得到更新版本的文件说
我的问题是:

  • 在调试模式下,是否有一种内置方式或扩展自动为变量赋值。现在我突出显示变量并键入文本,这可以自动化吗

提前感谢

当我遇到这样的情况时,我通常使用条件编译和环境变量/reg键的组合。您可以使用这些存储机制托管信息,而无需将其硬编码到应用程序中

#if DEBUG
if ( null != Environment.GetVariable("CUSTOM_INFO")) {
  userName = Environment.GetVariable("CUSTOM_USERNAME");
  ...
}
#endif

这样,它不会影响任何其他开发人员。当然,除非他们想完成同样的事情。

加上JaredPar的回答,让课程成为部分课程

这将使您保持主文件(签入的文件)的更新。另一个文件(包含IF-DEBUG的文件)将是本地文件&不会被签入


希望有帮助。

奇怪的问题。它在一年前就发布了,但单元测试和测试驱动开发的概念早在2009年就已经确立。使用优秀的工具,如nunit和testdriven.net。调试器不是合适的工具,它只会产生灰色头发。

您可以使用跟踪点设置变量

在不希望设置变量的位置设置断点。右键单击红色图示符并选择“操作”(从键盘上,您可以使用alt+F9、c和一些选项卡以及空格键操作进行排序)。正如要显示的消息所示,您可以输入一个字符串,其中包含要在大括号中执行的表达式

例如:

将输出“2+2=4”。 在表达式中,还可以指定变量:

{myVar = 5}
这确实会产生不幸的副作用,将表达式的结果值打印到输出窗口。
为了避免这种情况,您可以使用Void-returning-helper扩展方法分配变量:

public static class HelperFunctions
{
    public static void AssignTo<T>(this T value, out T variable)
    {
        variable = value;
    }
}
这将只向Ouput窗口输出一个换行符(根据您的偏好,它可能不那么糟糕或更糟)

要在不污染输出窗口的情况下分配变量,如果可以在跟踪点的条件下分配变量,那就太好了,但无论我尝试编造多少辅助函数,这似乎都是不可能的。我看起来好像条件表达式中的变量是沙盒,而操作消息表达式中的变量不是沙盒。

编辑


在Visual Studio 2013中,在断点条件下分配变量是可能的,但在2019年,副作用(如变量分配)被丢弃:

Eyeh,但对于运行整个系统,在执行过程中插入值,测试框架往往不起作用。或者至少我的印象是这样的。我认为可以通过条件断点来实现这一点,但Green Hills调试器有一个“跳转断点”,允许您跳过部分代码或在遇到断点时设置条件。
public static class HelperFunctions
{
    public static void AssignTo<T>(this T value, out T variable)
    {
        variable = value;
    }
}
{"new value".AssignTo(out def)}