在编译时确定值?

时间:2010-06-23 07:58:30

标签: c#

我们的经理希望在图标上显示工具提示,以显示应用的构建日期。我想有一个在构建时分配正确值的变量,所以我不必记得每次编译时都要更改它。有没有办法在C#/ .Net中执行此操作?

5 个答案:

答案 0 :(得分:3)

尝试以下代码行

DateTime buildDate = 
   new FileInfo(Assembly.GetExecutingAssembly().Location).LastWriteTime;

相对答案:How to put the build date of application somewhere in the application?

答案 1 :(得分:1)

回答一般性问题:不,除了对数值类型和字符串连接的简单算法之外,没有办法让C#编译器在编译时做任何工作。你不能让它嵌入当前日期。

但是,出于这个特定目的,您可以使用Jeff Atwood的博文中的“第三条道路”:http://www.codinghorror.com/blog/2005/04/determining-build-date-the-hard-way.html

答案 2 :(得分:1)

最简单的方法是从.exe或.dll本身检查文件日期/时间:

Assembly asm = Assembly.GetExecutingAssembly();
if( asm != null && !string.IsNullOrEmpty(asm.Location) ) {
   FileInfo info = new FileInfo(asm.Location);
   DateTime date = info.CreationTime;
}

答案 3 :(得分:0)

如何编制解决方案?
如果是使用Visual Studio进行常规编译,则可以设置Pre-Build事件以运行脚本并更改包含日期的代码文件。

答案 4 :(得分:0)

您可以创建一个在构建时调用的工具,并将当前时间作为常量插入到代码文件中,如assemblyinfo.cs。

另一种方法是从可执行文件中读取文件修改时间。