Problem getting the AssemblyVersion into a web page using Razor /MVC3

C#asp.net Mvc-3ReflectionAssembliesRazor

C# Problem Overview


I'm using the following code in a footer in my _Layout.cshtml file to put the AssemblyInfo version data into the footer of every page in my MVC3 site. However:

@System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()

Just prints in the footer:

Revision 0.0.0.0

When I modified the view to display all of the assembly info for the "Executing Assembly" using the following

@System.Reflection.Assembly.GetExecutingAssembly().GetName().ToString()

Which prints the following:

Revision App_Web__layout.cshtml.639c3968.hlogy75x, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null

This shows that the "Executing Assembly" isn't my main app, it's the view itself.

How do I get the assembly information for the ACTUAL app, not just the individual views??

C# Solutions


Solution 1 - C#

cshtml/vbhtml is dynamic compile to assembly.

@typeof(YourApplicationNamespace.MvcApplication).Assembly.GetName().Version

how about this?

Solution 2 - C#

This works for me. Without needing to explicitly mention the type.

@ViewContext.Controller.GetType().Assembly.GetName().Version

Solution 3 - C#

Using this helper works for me:

    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("");
        }

    }

Solution 4 - C#

You need to get the assembly of a type in the project:

typeof(MyType).Assembly.Whatever

Where MyType is any type in the MVC project itself (eg, a controller or model, or the MvcApplication class)

Solution 5 - C#

Expanding on takepara's answer, if you want a one liner to get the AssemblyInformationalVersionAttribute from a MVC Razor View:

@System.Diagnostics.FileVersionInfo.GetVersionInfo(typeof(Zeroarc.Candid.Web.MvcApplication).Assembly.Location).ProductVersion

Solution 6 - C#

You could try to use the GetCallingAssembly(). I'm not sure if that is high enough up the call stack or not, but since Razor actually creates an assembly for each view, it stands to reason that your app would be the calling assembly for the view assembly.

Solution 7 - C#

for an api controller I used this based of other answers

Version = GetType().Assembly.GetName().Version.ToString()

Solution 8 - C#

My problem was that I had renamed the namespace afterwards and I got the error above. The problem was the old namespace reference in the Views\Web.config . I had to change it from Project.WebAPI17 to Company.Project.WebAPI17

  <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>

Solution 9 - C#

You can get it using Name property as below:

  @System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;

is that what you are looking for?

Solution 10 - C#

GO to Home Controller and just copy this code :

Rename ActionResult to String

public string Index()
        
   return typeof(Controller).Assembly.GetName().Version.ToString() ;
     
run view

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJay StevensView Question on Stackoverflow
Solution 1 - C#takeparaView Answer on Stackoverflow
Solution 2 - C#HaohmaruView Answer on Stackoverflow
Solution 3 - C#JayView Answer on Stackoverflow
Solution 4 - C#SLaksView Answer on Stackoverflow
Solution 5 - C#jslattsView Answer on Stackoverflow
Solution 6 - C#BAKeeleView Answer on Stackoverflow
Solution 7 - C#workabyteView Answer on Stackoverflow
Solution 8 - C#florian.isoppView Answer on Stackoverflow
Solution 9 - C#matmatView Answer on Stackoverflow
Solution 10 - C#prashantView Answer on Stackoverflow