Ich verwende den folgenden Code in einer Fußzeile in meiner _Layout.cshtml-Datei, um die AssemblyInfo-Versionsdaten in die Fußzeile jeder Seite meiner MVC3-Site einzufügen. Jedoch:
@System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()
Nur Drucke in der Fußzeile:
Revision 0.0.0.0
Wenn ich die Ansicht geändert habe, um alle Assembly-Informationen für die "Assembly ausführen" anzuzeigen, verwenden Sie Folgendes
@System.Reflection.Assembly.GetExecutingAssembly().GetName().ToString()
Was druckt folgendes:
Revision App_Web__layout.cshtml.639c3968.hlogy75x, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Dies zeigt, dass die "ausführende Baugruppe" nicht meine Hauptanwendung ist, sondern die Ansicht selbst.
Wie erhalte ich die Assembly-Informationen für die ACTUAL-App, nicht nur die einzelnen Ansichten?
cshtml/vbhtml ist eine dynamische Kompilierung in Assembly.
@typeof(YourApplicationNamespace.MvcApplication).Assembly.GetName().Version
wie wäre es damit?
Dieser Helfer funktioniert für mich:
public static HtmlString ApplicationVersion(this HtmlHelper helper)
{
var asm = System.Reflection.Assembly.GetExecutingAssembly();
var version = asm.GetName().Version;
var product = asm.GetCustomAttributes(typeof(System.Reflection.AssemblyProductAttribute), true).FirstOrDefault() as System.Reflection.AssemblyProductAttribute;
if (version != null && product != null)
{
return new HtmlString(string.Format("<span>{0} v{1}.{2}.{3} ({4})</span>", product.Product, version.Major, version.Minor, version.Build, version.Revision));
}
else
{
return new HtmlString("");
}
}
Das funktioniert für mich. Ohne den Typ explizit erwähnen zu müssen.
@ViewContext.Controller.GetType().Assembly.GetName().Version
Sie müssen die Assembly eines Typs im Projekt abrufen:
typeof(MyType).Assembly.Whatever
Dabei ist MyType
ein beliebiger Typ im MVC-Projekt selbst (z. B. ein Controller oder Modell oder die MvcApplication
-Klasse).
Die Antwort von Takepara wird erweitert, wenn Sie möchten, dass ein einziger Liner das AssemblyInformationalVersionAttribute aus einer MVC Razor-Ansicht erhält:
@System.Diagnostics.FileVersionInfo.GetVersionInfo(typeof(Zeroarc.Candid.Web.MvcApplication).Assembly.Location).ProductVersion
Sie könnten versuchen, GetCallingAssembly () zu verwenden. Ich bin mir nicht sicher, ob das hoch genug im Call Stack ist oder nicht, aber da Razor tatsächlich eine Assembly für jede Ansicht erstellt, ist es naheliegend, dass Ihre App die aufrufende Assembly für die View Assembly ist.
Mein Problem war, dass ich den Namespace nachträglich umbenannt hatte und oben den Fehler bekam ... Das Problem war die alte Namespacereferenz in Views\Web.config. Ich musste es von Project.WebAPI17
in Company.Project.WebAPI17
ändern
<system.web.webPages.razor>
<Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="Company.Project.WebAPI17" />
</namespaces>
</pages>
</system.web.webPages.razor>
GO to Home Controller und kopiere einfach diesen Code:
Benennen Sie ActionResult
in String um
public string Index()
return typeof(Controller).Assembly.GetName().Version.ToString() ;
run view