【发布时间】:2016-03-16 11:47:19
【问题描述】:
我正在创建一个 C# 程序的演示版本,我希望它在一个月后过期。
// DEMO - Check date
DateTime expires = new DateTime(2016, 3, 16);
expires.AddMonths(2);
var diff = expires.Subtract(DateTime.Now);
if (diff.Days < 0)
{
MessageBox.Show("Demonstration expired.");
return;
}
我想要编译的日期而不是硬编码的new DateTime(2016, 3, 16);
是否有编译器指令给我当前日期?还是我以错误的方式接近这个?
【问题讨论】:
-
如果这个程序将在用户的机器上运行,这个技术是无效的。用户可以简单地更改其操作系统的日期(这会影响
DateTime.Now)来欺骗您的程序认为它还没有过期。 -
@Bob 这是一个很好的答案。目前我正在使用 [assembly: AssemblyVersion("1.0.10.*")] 但我可以将其更改为 "1.1.*" 并且该方法可以工作。
-
我会在构建过程中将日期作为字符串插入到适当的文件中。在构建时选择一个已知文件,然后用日期替换特定标记是一个相对简单的过程。
标签: c#