ASP.NET页面构建时动态设置版本号是否可行?代码实现咨询
ASP.NET页面动态设置版本号的可行方案及注意事项
当然可以这么实现,但有几个细节需要注意,得根据你实际想要的版本生成时机来调整:
首先,你写的
<# DateTime.Now.ToString("%M") #>这种是ASP.NET Web Forms的数据绑定表达式语法,要让它生效,必须确保页面(或包含这个<span>的控件)调用了DataBind()方法。比如在页面的Page_Load事件里加上这行代码:protected void Page_Load(object sender, EventArgs e) { this.DataBind(); }不然这些表达式只会原样输出,不会被解析执行。
这里要区分一个关键需求:你到底想要运行时动态版本还是构建时固定版本?
- 如果是前者(每次用户访问页面都用当前日期当版本后缀,比如用于静态资源缓存刷新),那你的思路没问题,但可以简化写法——不用拆成两个表达式,直接用
MMdd格式符生成两位月份+日期:
注意你之前用的<span>V2.0.<# DateTime.Now.ToString("MMdd") #></span>%M是错误的,DateTime.ToString里直接用MM就表示两位月份,这样生成的格式会是V2.0.0412这种规范的形式。 - 如果是后者(构建发布时生成固定版本号,之后不再变化),那
DateTime.Now就不合适了——因为它会在每次请求时计算日期,版本号天天变。这时候更推荐用MSBuild来生成构建版本:- 打开项目的
.csproj文件,添加构建属性:<PropertyGroup> <BuildVersion>2.0.$([System.DateTime]::Now.ToString("MMdd"))</BuildVersion> </PropertyGroup> <ItemGroup> <AppSettings Include="BuildVersion" Value="$(BuildVersion)" /> </ItemGroup> - 然后在.aspx页面里用服务器端输出表达式调用这个配置:
<span>V<%= ConfigurationManager.AppSettings["BuildVersion"] %></span>
- 打开项目的
- 如果是前者(每次用户访问页面都用当前日期当版本后缀,比如用于静态资源缓存刷新),那你的思路没问题,但可以简化写法——不用拆成两个表达式,直接用
总结一下,根据你的实际需求选择对应的方案:运行时动态版本的话,调整数据绑定逻辑即可;构建时固定版本的话,用MSBuild配置更合适。
内容的提问来源于stack exchange,提问作者realPro
相关产品推荐
相关产品推荐

