Номер версии для печати в приложении ASP.NET MVC 4
У меня есть приложение ASP.NET MVC 4. В настоящее время я устанавливаю версию приложения в свойствах проекта на вкладке "Приложение". Отсюда я нажимаю кнопку "Информация о сборке...". После этого я ввел "1 0 0 *" в поле "Версия сборки".
Мой вопрос: как мне показать это значение на моей веб-странице? В настоящее время я пытаюсь выполнить следующие
@System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()
К сожалению, он всегда печатает "0.0.0.0". Реально, я бы хотел, чтобы он печатал 1.0.0.xyz. Я также хотел бы напечатать дату/время, когда произошла последняя сборка. Однако я не знаю, как это сделать.
Что я делаю неправильно?
Ответы
Ответ 1
Чтобы напечатать номер версии сборки, в которой был определен контроллер, который отобразил это представление:
@ViewContext.Controller.GetType().Assembly.GetName().Version
и для даты сборки:
@File.GetCreationTime(ViewContext.Controller.GetType().Assembly.Location)
Ответ 2
Я обычно делаю расширение HtmlHelper
для этой цели. Что-то вроде этого:
public static class HtmlHelperExtensions
{
public static IHtmlString AssemblyVersion(this HtmlHelper helper)
{
var version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
return MvcHtmlString.Create(version);
}
}
И чем вы можете просто позвонить:
@Html.AssemblyVersion()
Ответ 3
Если вы публикуете свое приложение на производственном сервере, я бы рекомендовал использовать что-то вроде
@String.Format(
"{0:dddd, MMMM d, yyyy HH:mm:ss}",
File.GetLastWriteTime(ViewContext.Controller.GetType().Assembly.Location))
для получения даты.
Это будет печатать фактическую дату публикации, так как File.GetCreationTime()
даст вам дату, когда фактическая сборка dll была первой, скопированной на сервере.
Ответ 4
Рабочее решение для правильной даты модификации после развертывания:
@File.GetLastWriteTime(@System.Reflection.Assembly.GetExecutingAssembly().Location)
Может использоваться и в MVC5.
Ответ 5
Это печатает текущий номер версии, как указано в файле AssemblyInfo.cs
для печати в представлении ASP.NET MVC:
@(typeof(MyController).Assembly.GetName().Version.ToString())
Замена MyController
, конечно, вашим соответствующим именем контроллера MVC.
Ответ 6
Ваша версия сборки может быть установлена с помощью AssemblyFileVersionAttribute
, к которой необходимо получить доступ.
AssemblyFileVersionAttribute attr = typeof(MyController).Assembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true).OfType<AssemblyFileVersionAttribute>().FirstOrDefault();
if (attr != null)
{
return attr.Version;
}
MvcDiagnostics Nuget package делает это простым.
Ответ 7
Если вам нужно это в виде Razor, это работает для меня. Мне нужен был префикс System.IO.*
Чтобы он работал у меня.
<!--
Version @System.Diagnostics.FileVersionInfo.GetVersionInfo(typeof(YourNamespace.Program).Assembly.Location).ProductVersion
Last deployed on @System.IO.File.GetCreationTime(typeof(YourNamespace.Program).Assembly.Location)
-->
Выводит следующее:
<!--
Version 1.0.0
Last deployed on 04/19/2019 1:36:24 PM
-->