在您的网站底部显示一个版本,例如:v.1.10.2 是很有趣的
为什么要在我的网站底部显示一个版本?
如果您在开发中使用多个环境,您可能不知道 DEV 版本是否是最新版本,STAGING (QA) 版本是否是先前版本,以及在 PRODUCTION 中是否与 STAGING (QA) 版本相同,因此在底部显示您网站的最新版本是很好的。
怎么做?
只需在一个 MVC ASP.Net 项目中,在页面 _layout.cshtml 的底部(通常在 /Views/Shared:_layout.cshtml 中)添加以下内容:
<footer>
<span>版权所有 © [MonSite] 2019 - <!-- version -->v1.0.0.0<!-- version --> </span>
</footer>
因此,我在我的页脚中添加了以下内容:
<!-- version -->v1.0.0.0<!-- version -->
接下来,您需要在您的 ASP.Net 解决方案根目录中创建一个名为 "ScriptChangeVersion.vbs" 的 VBscript 文件,内容如下:
'*** BY Dado 08/05/2019
'*** 在每次通过 Visual Studio 构建时自动更改 .aspx 或 .ascx 或 .cshtml 文件中的字符串
'获取一个或多个参数
'通常我们必须至少有一个参数,即当前脚本的路径
'Visual Studio 默认不提供当前目录:File.GetAbsolutePathName(".") 返回空字符串
Set oArgs=WScript.Arguments
'实例化 Regex 对象以处理行
Set regex = new RegExp
regex.Pattern = "<!-- date -->[^<]+<!-- date -->"
regex.IgnoreCase = true
regex.Global = true
'实例化 Regex 对象以处理版本
Set regexVersion = new RegExp
regexVersion.Pattern = "<!-- version -->v?\.?([\d]*)\.?([\d]*)\.?([\d]*)\.?([\d]*)<!-- version -->"
regexVersion.IgnoreCase = true
regexVersion.Global = true
'这是要处理的临时文件
tmpFile = "c:\windows\temp\tempFooter.txt"
'实例化对象
Set Shell = CreateObject("WScript.Shell")
Set File = CreateObject("Scripting.FileSystemObject")
'如果您手动执行此脚本,您可以检索路径,但通过 Visual Studio 不行
'currentDirectory = File.GetAbsolutePathName(".")
'获取文件
fileName = oArgs(0) & "Views\Shared\_Layout.cshtml"
'打开此文件并创建一个新文件
Set CurrentFile = File.OpenTextFile(fileName)
Set OutputFile = File.CreateTextFile(tmpFile,True)
If Not File.FileExists(fileName) Then
Wscript.Echo "未找到此文件: " & fileName
Return
Else
Wscript.Echo "找到文件: " & fileName
End If
'解析每一行
Do Until CurrentFile.AtEndOfStream
'读取行
strLine = CurrentFile.ReadLine
'检查 RegEx 是否找到模式
If regex.Test(strLine) Then
'更改行
strLine = regex.Replace(strLine, "<!-- date -->(" & Right("0" & Day(Now), 2) & "/"& Right("0" & Month(Now), 2) & "/" & Year(Now)& " "& Right("0" & Hour(Now), 2) & ":"& Right("0" & Minute(Now),2) & ")<!-- date -->")
'更改版本
End If
If regexVersion.Test(strLine) Then
'更改版本
version = regexVersion.Execute(strLine)(0).SubMatches(0) '[v.1.0.3]
WScript.Echo "找到版本: " & version
maxNumber = regexVersion.Execute(strLine)(0).SubMatches(1)
WScript.Echo "找到最大数字: " & maxNumber
mediumNumber = regexVersion.Execute(strLine)(0).SubMatches(2)
WScript.Echo "找到中间数字: " & mediumNumber
minorNumber = regexVersion.Execute(strLine)(0).SubMatches(3)
WScript.Echo "找到次要数字: " & minorNumber
If version = "" Then
version = 1
End If
If maxNumber = "" Then
maxNumber = 0
End If
If mediumNumber = "" Then
mediumNumber = 0
End If
If minorNumber = "" Then
minorNumber = 0
End If
minorNumber = minorNumber + 1
if minorNumber = 100 Then
minorNumber = 0
mediumNumber = mediumNumber + 1
if mediumNumber = 100 Then
mediumNumber = 0
maxNumber = maxNumber + 1
If maxNumber = 100 Then
maxNumber = 0
version = version + 1
End if
End If
End If
newVersion = "<!-- version -->v." & version & "." & maxNumber & "." & mediumNumber & "." & minorNumber & "<!-- version -->"
WScript.Echo "将版本更改为: " & newVersion
strLine = regexVersion.Replace(strLine, newVersion)
End If
'写入行
'WScript.Echo strLine
OutputFile.Write(strLine & vbCrLf)
Loop
'关闭所有
OutputFile.Close
CurrentFile.Close
'删除原始文件
File.DeleteFile(fileName)
'重命名临时文件
File.MoveFile tmpFile,fileName
'获取该文件的完全控制权限
Shell.Run "cacls " & fileName & " /E /T /C /G ""Everyone"":F ", 2, True
此脚本一旦执行,将加载页面 _layout.cshtml,查找位于 <!-- version --> 标签之间的版本,并保存所有内容!
要自动化这一切,您需要在您的 ASP.Net 解决方案中创建一个 POST BUILD 事件(在构建您的解决方案后),如下所示:

您添加以下行:
if "$(ConfigurationName)" == "Debug" cscript /nologo $(SolutionDir)ScriptChangeVersion.vbs "$(ProjectDir)"
每次您以 DEBUG 模式构建您的解决方案时,.vbs 脚本将被执行,并将更改您页面底部的版本。
您的版本将自动递增,如下所示:
v1.0.0.0
v1.0.0.1
v1.0.0.2
...
v1.0.0.99
v1.0.1.0
v1.0.1.1
...
v1.0.99.99
v1.1.0.0
...
v1.99.99.99
v2.0.0.0
好了!现在轮到您在脚本中进行一些更改,如果您愿意的话。
我还在脚本中添加了一个功能,可以显示构建日期,只需在您的页面中添加标签 <!-- date --> ... <!-- date -->。
Aucun commentaire pour le moment.