На всякий случай, если кто-то еще заинтересован; это должно сделать свое дело и должно быть немного безопаснее, чем просто взять BaseType
из ApplicationInstance
, чтобы получить в свои руки реализацию Global.asax.
Global.asax всегда компилируется в ту же сборку, что и атрибуты сборки из AssemblyInfo.cs, поэтому это должно работать для всех веб-приложений, которые определяют Global.asax.
Для тех, кто не определяет свой собственный Global.asax, он вернется к версии сгенерированного типа global_asax
, которая всегда 0.0.0.0, а для приложений, которые не являются веб-приложениями, это будет просто не верните никакой версии.
Бонус; использование BuildManager
класса не требует активного HttpContext
экземпляра, что означает, что вы также можете использовать его из кода запуска приложения.
public static Version GetHttpApplicationVersion() {
Type lBase = typeof(HttpApplication);
Type lType = BuildManager.GetGlobalAsaxType();
if (lBase.IsAssignableFrom(lType))
{
while (lType.BaseType != lBase) { lType = lType.BaseType; }
return lType.Assembly.GetName().Version;
}
else
{
return null;
}
}