使用 Visual Studio 2019 调试未来日期

Posted

技术标签:

【中文标题】使用 Visual Studio 2019 调试未来日期【英文标题】:Debugging future dates using Visual Studio 2019 【发布时间】:2021-08-13 01:47:25 【问题描述】:

我有一种情况需要调试在未来某个日期运行的进程。这是现有的遗留代码,在其代码中的多个位置使用 DateTime.Now (C#) 和 GETUTCDATE() (T-SQL)。我们必须更改 Windows 10 上的日期和时间,以测试代码在未来日期中的表现。

我们已尝试阻止互联网访问,但该应用程序使用需要互联网访问的第 3 方 API。在 Visual Studio 2019 检查过时的许可证之前,我们通常需要大约 1 小时的调试时间。

最大的问题是我们在调试过程中遇到了 Visual Studio 2019 的许可问题。我们被淘汰了,不得不重新开始。这个过程很长,通常需要大约一个小时才能到达调试位置。

有没有人知道一个开关或命令行参数来临时允许我们修改系统日期,而无需因许可证过期而关闭 Visual Studio 2019?或者任何人尝试过调试的技术。

提前感谢您的帮助。

【问题讨论】:

大声笑这很有趣,我希望你能找到答案。有意思,我也想知道答案…… 您可以尝试模拟 DateTIme.Now 以使用您自己的自定义方法返回未来日期 您可以通过在 hosts 文件中阻止 Visual Studio 在线检查来阻止它 你知道我需要阻止什么主机吗?或者使用什么工具来检查这些主机?我知道这是非法的,因为它可以为盗版打开大门。然而,这种情况并非如此。而是需要通过现代许可检查来适应遗留代码的日期调整。 使用 VS Remote Debugger 在不同的 PC 上运行它怎么样 【参考方案1】:

你说它是遗留代码,但希望你能改变它。

一种选择是将DateTime.Now 的所有用法替换为DateTimeEx.Now,并添加如下类:

public static class DateTimeEx

    public static TimeSpan Offset  get; set; 
    public static DateTime Now => DateTime.Now + Offset;

您可以将Offset 设置为您喜欢的任何值以进行测试。

【讨论】:

【参考方案2】:

评论太多了。

您可以尝试安装一个名为Fiddler 的有用调试工具。

在 Fiddler 运行的情况下,在 Visual Studio 运行时监控您的 http 流量,以查看它正在联系和通信的地址。您应该在 Fidder 的 Inspectors 选项卡中看到类似的内容

一旦您确定或怀疑它在做什么,请在记事本中打开您的 Windows 主机文件(通常是 C:\Windows\System32\drivers\etc\hosts) 并为每个 URL 添加条目,例如

0.0.0.0 dc.services.visuastudio.com

暂时阻止它连接到该特定站点。

完成后删除或注释掉。

【讨论】:

以上是关于使用 Visual Studio 2019 调试未来日期的主要内容,如果未能解决你的问题,请参考以下文章

调试时 Visual Studio 2019 未启动控制台应用程序窗口

在 Visual Studio 2019 中使用的 Razor 视图未更新

“运行|调试”按钮未出现在 Visual Studio Code Java 程序上

Xamarin 项目未显示在 Visual Studio Android 模拟器上

Google Test:错误LNK2019:Visual Studio 2013中未解析的外部符号

使用Visual Studio 2019--调试汇编代码