当前位置: 首页 > 编程语言 > C#

如何在编译时查找.net-C#应用程序中的当前时间和日期?Share

时间:2023-04-10 22:47:13 C#

如何在编译时在.net/C#应用程序中查找当前时间和日期?我想在我的.net应用程序中包含当前时间和日期,以便我可以将其包含在启动日志中以向用户显示他们拥有的版本。是否可以在编译期间检索当前时间,或者我是否必须获取可执行文件的创建/修改时间?例如欢迎使用ApplicationX。这是按月建立的。如果您对构建号使用反射,则可以使用它来确定构建编译的时间。程序集的版本信息由以下四个值组成:主要版本次要版本内部版本号调整您可以指定所有值,或使用星号(*)接受默认内部版本号、修订版号或两者。内部版本号和修订版默认基于2000年1月1日。以下属性将设置主要和次要,但随后增加内部版本号和修订版。[assembly:AssemblyVersion("5.129.*")]然后你可以使用这样的东西://MyVersion.Build=daysafter2000-01-01//MyVersion.Revision*2=secondsafter0-hour(NEVERdaylightsavingtime)DateTimecompileTime=newDateTime(2000,1,1).AddDays(MyVersion.Build).AddSeconds(MyVersion.Revision*2);返回编译时间;我知道这样做的唯一方法有点复杂-你可以有一个预构建事件来运行一个小应用程序,该应用程序可以动态生成源代码。一种简单的方法是覆盖一个非常小的文件,该文件包含一个类(或其中的一部分),其中日/月/年硬编码为字符串常量。如果将其设置为作为预构建事件运行,它将在每次构建之前重写文件。您可以使用PostSharp在构建后立即编织日期。PostSharp带有一个轻量级的面向方面的编程库,但它可以扩展为以各种方式编织您需要的任何东西。它在IL级别工作,但API从中提取了一些东西。http://www.postsharp.org/这种语言没有内置任何内容。您可以编写一个预构建步骤来写出源文件的当前日期和时间(例如,在字符串文字中,或作为生成日期时间源),然后将其编译为构建的一部分。我建议您使这个源文件尽可能简单,只包含这些信息。或者,它可以编辑现有文件。有关此示例,请参阅MiscUtil的构建文件,它在AssemblyFileVersion属性中嵌入了当前的SVN修订版。构建文件的一些配置位:在C程序的makefile中,您通常会看到这样的内容:echochar*gBuildSig="%DATE%%TIME%";>BuildTimestamp.c然后将生成的C源文件编译成镜像。以上适用于Windows,因为%date%和%time%变量在cmd.exe中是已知的,但类似的东西适用于使用cat的Unix。你可以用C#做同样的事情。同样,这就是您使用makefile时的样子。您需要一个类和一个公共静态属性。BuildTimestamp.cs:echopublicstaticclassBuild{publicstaticstringTimestamp="%DATE%%TIME%";}>BuildTimestamp.cs然后无论您正在构建什么,都依赖并删除:MyApp.exe:BuildTimestamp.csMyApp。cs$(_CSC)/target:exe/debug+/optimize-/r:System.dll/out:MyApp.exeMyApp.csBuildTimestamp.cs-delBuildTimestamp.cs编译后一定要删除BuildTimestamp.cs文件;你不想重用它。然后,在您的应用程序中,只需引用Build.Timestamp。使用MSBuild或VisualStudio,它会更复杂。我无法计算%date%或%time%。这些东西是伪环境变量,我想这就是原因。因此,我采用一种间接的方式,使用带有AlwaysCreate=true的Touch任务来获取时间戳。这将创建一个空文件。下一步是将源代码写入同一个文件,引用文件的时间戳。一个转折-我不得不逃避分号。您的预构建步骤应该构建目标“BuildTimestamp”。并确保将该文件包含在您的编译中。然后在构建后步骤中将其删除。您可以在构建过程中更新AssemblyInfo.cs中的程序集版本。然后你可以做这样的事情FileVersionInfolvar=FileVersionInfo.GetVersionInfo(FileName);FileVersionInfo包含您要查找的信息(构建/版本等)。看看这是否适合你。嗨,我用下面的方法来实现同样的...以上是C#学习教程:Howtofindthecurrenttimeanddateina.net/C#applicationatcompiletime?如果分享的内容对你有用,需要进一步了解C#学习教程,希望你多多关注—privateDateTimeExecutableInfo(){System.IO.FileInfofi=newSystem.IO.FileInfo(Application.ExecutablePath.Trim());尝试{返回fi.CreationTime;}catch(Exceptionex){抛出ex;}最后{fi=null;}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: