我正在使用asp.net核心开发一个网站
我将其与Visual Studio
或/和VSTS
一起发布。
我想显示一些关于它在网页上的构建的信息
(类似于rev 2016.9.20.4002
)
我该怎么做?
答案 0 :(得分:1)
看起来ApplicationEnvironment类就是您所需要的:
var appEnv = new Microsoft.Extensions.PlatformAbstractions.ApplicationEnvironment();
string version = appEnv.ApplicationVersion;
另外
How can I auto-increment an MVC 6 version number?也可能对您感兴趣,但请注意,IApplicationEnvironment
已被删除。
答案 1 :(得分:1)
你的意思是这样的:
在project.json中:
{
"title": "Your Application name",
"version": "2016.9.20.4002",
"copyright": "Your Company 2016",
"description": "Awesome ASP.Net Core Application",
"dependencies": {
//rest of project.json
然后,您可以在视图模型或模型中创建属性,例如:
public static string Version
{
get
{
var assembly = Assembly.GetExecutingAssembly();
var fileVersion = GetCustomAttribute<AssemblyFileVersionAttribute>(assembly);
return fileVersion?.Version;
}
}
在您看来:
@model Namespace.CustomViewModel
<!--Other HTML Code-->
<span id="applicationVersion">@CustomViewModel.Version</span>
答案 2 :(得分:1)
作为替代选项,您可以读取创建程序集的时间并以版本格式显示它。每次重建程序集时,此值都将更改为创建它的时间。
(改编自this answer .Net Core)
public static class AppInfo
{
private static Lazy<string> buildVersion =
new Lazy<string>(() => GetBuildVersion(Assembly.GetEntryAssembly()));
public static string BuildVersion { get; } = buildVersion.Value;
private static string GetBuildVersion(Assembly assembly)
{
var filePath = assembly.Location;
const int c_PeHeaderOffset = 60;
const int c_LinkerTimestampOffset = 8;
var buffer = new byte[2048];
using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
stream.Read(buffer, 0, 2048);
var offset = BitConverter.ToInt32(buffer, c_PeHeaderOffset);
var secondsSince1970 = BitConverter.ToInt32(buffer, offset + c_LinkerTimestampOffset);
var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
var linkTimeUtc = epoch.AddSeconds(secondsSince1970);
var localTime = TimeZoneInfo.ConvertTime(linkTimeUtc, TimeZoneInfo.Local);
var minutesFromMidnight = localTime.Minute + localTime.Hour * 60;
return localTime.ToString("yyyy.M.dd.") + minutesFromMidnight;
}
}
然后在Razor中引用它作为:
@AppInfo.BuildVersion
答案 3 :(得分:1)
您可以使用内部版本号跟踪它。
向您的网站显示内部版本号的步骤:
{ "ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-WebApplication1-ab933d83-8f4b-4024-9f3c-1aef5339a8f3;Trusted_Connection=True;MultipleActiveResultSets=true" }, "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } }, "CodeVersion": { "Num": "#{MyBuildNumber}#" } }
答案 4 :(得分:1)
经过一天的研究,终于找到/创建了比使用Marketplace中任何随机应用(替换令牌)更好的选择。
我正在讨论的选项已在VSTS,Azure CLI任务中提供。
以下是疱疹:
az webapp config appsettings set -n iCoreTestApi -g ArchitectsSandbox -s Dev --settings BUILD_NUMBER=$(Build.BuildNumber)
命令解释:
在成功完成部署后,您将对新构建进行排队,您可以看到Azure上的应用程序设置部分已使用新的BUILD_NUMBER进行更新。
如果您还有任何疑问,请与我联系。