嵌入应用程序编译时间戳

时间:2010-06-15 21:58:27

标签: visual-studio-2008 msbuild build-process timestamp

是否有一种简单的方法可以在构建过程中配置要在应用程序中显示的构建的时间戳中写入“此页面上次更新时间:2010年6月26日”

1 个答案:

答案 0 :(得分:2)

一种解决方案是在构建期间将此信息嵌入到程序集属性中。您可以使用MSBuild社区任务Time和AssemblyInfo任务执行此操作:

<Time>
    <Output TaskParameter="Month" PropertyName="Month" />
    <Output TaskParameter="Day" PropertyName="Day" />
    <Output TaskParameter="Year" PropertyName="Year" />
    <Output TaskParameter="Hour" PropertyName="Hour" />
    <Output TaskParameter="Minute" PropertyName="Minute" />
    <Output TaskParameter="Second" PropertyName="Second" />
</Time>

<AssemblyInfo CodeLanguage="CS"  
    OutputFile="$(MSBuildProjectDirectory)\GlobalInfo.cs" 
    AssemblyDescription="This page was last updated: $(Month)/$(Day)/$(Year)"
/>

然后,您将在项目中包含源文件(本例中为GlobalInfo.cs)。要在代码中访问此值,您可以使用以下内容:

public static string GetAssemblyDescription(Type t)
{
    string result = String.Empty;
    var items = t.Assembly.GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
    if (items != null && items.Length > 0)
    {
        AssemblyDescriptionAttribute attrib = (AssemblyDescriptionAttribute)items[0];
        result = attrib.Description;
    }
    return result;
}

Type t = typeof(MyClass);
string description = GetAssemblyDescription(t);
Console.WriteLine(description);