Это печально известная вещь, потому что, к сожалению, нет единого надежного способа сделать это.
Однако, поскольку это приложение MVC, есть вероятность, что у него есть Global.asax.cs, поэтомуон имеет локально определенный HttpApplication
класс.
Из html-помощника вы можете получить следующее:
public static string AppVersion(this HtmlHelper html)
{
var appInstance = html.ViewContext.HttpContext.ApplicationInstance;
//given that you should then be able to do
var assemblyVersion = appInstance.GetType().BaseType.Assembly.GetName().Version;
//note the use of the BaseType - see note below
return assemblyVersion.ToString();
}
Примечание
Вы можете удивиться, почему код используетBaseType
экземпляра приложения, а не просто тип.Это потому, что файл Global.asax.cs является основным типом приложения MVC, но затем Asp.Net динамически компилирует другой тип HttpApplication, который наследуется от него через Global.asax.
Как я уже говорил ранее;это работает на большинстве сайтов MVC, потому что все они должны иметь класс приложения, определенный в файле Global.asax.cs по соглашению (потому что так настроен проект).