跟踪为在 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.yaml
、test.yaml
、production.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中无法正常工作