当前位置:  开发笔记 > 编程语言 > 正文

C#在编译时将日期放入程序中

如何解决《C#在编译时将日期放入程序中》经验,为你挑选了2个好方法。

我在考虑如何创建一个只在X时间段内有效的程序(在C#应用程序中).

我想的是你将当前日期作为程序中的常量,它会检查它是否比X日期早X天.当然,我不希望将日期或X外部存储在程序之外,因为它可以被篡改.

我也不想定期手动更改它并重新编译和部署它.那么有没有办法将变量设置为编译时的当前日期?

我可以有一个批处理文件,可以编译它并将新的exe部署到分发服务器.

谢谢



1> Kilhoffer..:

预编译指令是您的关键.您可以在应用程序中创建一个常量,并在编译时设置它.

但是,请确保对代码进行模糊处理.有人可以轻松拆卸它并篡改常数.另一个解决方案是让您的软件"手机回家"进行自我注册.这样,注册信息存储在您的服务器上,而不是他们的机器上.还有第三方软件包可以执行您所需的相同安全性,但它们很昂贵!



2> Amy B..:

查看项目的Properties文件夹中的AssemblyInfo.cs文件:

// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

将其更改为:

[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("1.0.0.0")]

然后,在程序集的其他地方,使用:

System.Version MyVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

// MyVersion.Build = days after 2000-01-01
// MyVersion.Revision*2 = seconds after 0-hour  (NEVER daylight saving time)
DateTime MyTime = new DateTime(2000, 1, 1).AddDays(MyVersion.Build).AddSeconds(MyVersion.Revision * 2);
return string.Format("Version:{0}  Compiled:{1:s}", MyVersion, MyTime);


他们还可以修改他们打电话的家.
推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有