跟踪为在 C#/Visual Studio 中进行调试而进行的更改

Posted

技术标签:

【中文标题】跟踪为在 C#/Visual Studio 中进行调试而进行的更改【英文标题】:Keep track of changes made for the purpose of debugging in C#/Visual Studio 【发布时间】:2021-04-01 11:30:49 【问题描述】:

我正在从事一个项目,我必须更改某些变量值以进行调试。在发布版本中,某些操作之间的时间跨度很长。对于调试,我会更改 TimeSpan 的值,以便不必等待这么长时间。示例:

//For Release:
//TimeSpan intervall1 = new TimeSpan.FromMinutes(90);

//For Debug:
TimeSpan intervall1 = new TimeSpan.FromSeconds(10);

我有很多这样的案例,所以很容易忘记撤消发布的更改。

有没有办法跟踪这些变化?或者在这种情况下有更好的调试方法吗?

【问题讨论】:

您应该为此使用应用程序设置,并为每个环境都有一个配置文件docs.microsoft.com/en-us/visualstudio/ide/… 到目前为止,每个人都非常清楚应该使用配置文件,但一个可能更简单的选择是使用编译器指令。我不会将此作为答案,因为它确实不是最佳选择,但它是满足基本要求的最简单选择 【参考方案1】:

通常,这些类型的值将由一些可能会发生变化的外部配置提供,或者通过传递给相关方法,或者通过从例如因环境而异的配置文件中读取,所以当你'正在运行你的测试,文件/config/test.json被加载,但在生产中文件/config/prod.json被加载。

因为生命太短暂,不能以艰难的方式去做。

【讨论】:

你能给我一些关于如何实现这一点的提示吗?你会在这些配置文件中写什么?你会使用 File.ReadAllText(test.json) 之类的方法读取文件,然后解析内容并将其分配给字段吗? @Patb:一种常见的模式是拥有一个config 目录,其中包含每个运行时环境的配置文件——比如dev.yamltest.yamlproduction.yaml。设置环境变量(或命令行标志)以指示运行时环境。当您的应用程序启动时,它会查看环境变量或命令行标志,并使用它来决定要加载哪些配置并使应用程序可用。现在您可以更改配置数据(如超时设置),而无需更改和重新编译代码。或者需要记得把它改回来。【参考方案2】:

一个简单的方法是使用#if preprocessor directive 来检查是否处于调试模式。

这里是演示。

#if DEBUG
            Console.WriteLine("Mode=Debug");
            TimeSpan intervall1 = new TimeSpan.FromSeconds(10);
#else
            Console.WriteLine("Mode=Release"); 
            TimeSpan intervall1 = new TimeSpan.FromMinutes(90);
#endif

【讨论】:

以上是关于跟踪为在 C#/Visual Studio 中进行调试而进行的更改的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 的文本框中保存条目 | C#

项目未显示为在Visual Studio 2013中签入TFS

无法为在Visual Studio中添加新服务引用的SSL / TLS建立安全通道

Sqlite:外键在Visual Studio中无法正常工作

visual studio把右边的解决方案关闭了,怎么搞出来

如何在 Visual Studio 2017 中获取堆栈跟踪