_Layout.cshtml 파일의 바닥 글에 다음 코드를 사용하여 AssemblyInfo 버전 데이터를 MVC3 사이트의 모든 페이지 바닥 글에 넣습니다. 하나:
@System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()
바닥 글에 인쇄합니다.
Revision 0.0.0.0
다음을 사용하여 “Executing Assembly”에 대한 모든 어셈블리 정보를 표시하도록보기를 수정했을 때
@System.Reflection.Assembly.GetExecutingAssembly().GetName().ToString()
다음을 인쇄합니다.
Revision App_Web__layout.cshtml.639c3968.hlogy75x, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
이것은 “Executing Assembly”가 내 메인 앱이 아니라 뷰 자체임을 보여줍니다.
개별 뷰뿐만 아니라 ACTUAL 앱에 대한 어셈블리 정보를 얻으려면 어떻게해야합니까?
답변
cshtml / vbhtml은 어셈블리에 대한 동적 컴파일입니다.
@typeof(YourApplicationNamespace.MvcApplication).Assembly.GetName().Version
이건 어때요?
답변
이 도우미를 사용하면 저에게 효과적입니다.
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("");
}
}
답변
이것은 나를 위해 작동합니다. 유형을 명시 적으로 언급 할 필요가 없습니다.
@ViewContext.Controller.GetType().Assembly.GetName().Version
답변
프로젝트에서 유형의 어셈블리를 가져와야합니다.
typeof(MyType).Assembly.Whatever
MyType
MVC 프로젝트 자체의 모든 유형 (예 : 컨트롤러, 모델 또는 MvcApplication
클래스) 은 어디에 있습니까?
답변
하나의 라이너가 MVC Razor 뷰에서 AssemblyInformationalVersionAttribute를 가져 오려면 takepara의 답변을 확장합니다.
@System.Diagnostics.FileVersionInfo.GetVersionInfo(typeof(Zeroarc.Candid.Web.MvcApplication).Assembly.Location).ProductVersion
답변
GetCallingAssembly ()를 사용해 볼 수 있습니다. 이것이 호출 스택에서 충분히 높은지 확실하지 않지만 Razor는 실제로 각 뷰에 대한 어셈블리를 생성하기 때문에 앱이 뷰 어셈블리에 대한 호출 어셈블리가되는 이유가됩니다.
답변
API 컨트롤러의 경우 다른 답변을 기반으로 사용했습니다.
Version = GetType().Assembly.GetName().Version.ToString()