我有一个asp.net Web应用程序,其中有许多版本部署在其网络内的不同客户服务器上。我们有一个做法是让客户在出现问题时发送电子邮件截图。
在旧的asp.net 1.1天中,我们可以使用反射来获取构建DLL的详细信息,并在微妙的位置显示屏幕上的构建日期和编号的信息。
使用.NET 2.0及更高版本,构建模型已更改,并且此机制不再有效。我听说过不同的构建系统,但是我真的在3.5框架上寻找最简单的方法来做这个功能在框架1.1上做的。
>每次执行构建时,更新构建日期/时间,并以某种方式更新构建号
>可以看到构建时间戳和数字,以便在屏幕上显示
>尽可能简单的实现
解决方法
我们正在使用.Net 2.0并将版本信息从程序集中拉出。也许不是很理想,但我们使用描述来存储构建日期。
Assembly assembly = Assembly.GetExecutingAssembly(); string version = assembly.GetName().Version.ToString(); string buildDate = ((AssemblyDescriptionAttribute)Attribute.GetCustomAttribute( assembly,typeof(AssemblyDescriptionAttribute))).Description;
构建过程使用asminfo nant任务生成包含此信息的AssemblyInfo.cs文件。
<asminfo output="Properties\AssemblyInfo.cs" language="CSharp"> <imports> <import namespace="System" /> <import namespace="System.Reflection" /> <import namespace="System.Runtime.CompilerServices" /> <import namespace="System.Runtime.InteropServices" /> </imports> <attributes> <attribute type="AssemblyVersionAttribute" value="${assembly.version}" /> <attribute type="AssemblyInformationalVersionAttribute" value="${assembly.version}" /> <attribute type="AssemblyDescriptionAttribute" value="${datetime::now()}" /> ... </attributes> </asminfo>