Strange one here. My MVC Web Application's version number is not printing correctly to my view according to what is set in AssemblyInfo.cs
. The definition I have set in set AssemblyInfo.cs
is '1.0.232.0
'.
I have tried multiple methods in order to print it:
<%= System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()%>
(results 0.0.0.0)
<%= System.Reflection.Assembly.GetCallingAssembly().GetName().Version.ToString()%>
(results in 2.0.0.0, which is set nowhere in my project.)
<%= typeof(HomeController).GetType().Assembly.GetName().Version.ToString()%>
(results in 2.0.0.0)
This leads me to believe that it simply must not be picking up my AssemblyInfo.cs file? This is also the case if I attempt to use the "Publish" button to publish to IIS on our development server.
Any ideas? Perhaps I'm using the wrong statement to fetch the version number? :\
Thanks guys.
The view is (by default) still largely compiled on-demand, so you con't reliably use
GetExecutingAssembly()
within the view - however, for me the controller usage works fine:with:
shows
1.2.3.4
in the page.edit The mistake you made was calling
typeof(...).GetType()
- that is going to give youType
(or a subclass) - so yes, it will be 2.x. /editFor the extra step of pre-compiling the views, see "MSBuild Task for Compiling Views" here.
Arguably, your view shouldn't be fetching this data itself anyway - it should be put into the ViewData (or similar), perhaps by a base-controller or action-filter.
Re the question about master pages; first, pick a key ;-p
then two options leap to mind: override
OnActionExecuting
in the controller (or a common base-controller):or create an action-filter:
And mark your controllers (classes) or actions (methods) with this attribute: