Razor / MVC3를 사용하여 AssemblyVersion을 웹 페이지로 가져 오는 데 문제가 있습니다.
_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는 실제로 각 뷰에 대한 어셈블리를 생성하기 때문에 앱이 뷰 어셈블리에 대한 호출 어셈블리가되는 이유가됩니다.
내 문제는 나중에 네임 스페이스의 이름을 바꾸었고 위의 오류가 발생했습니다. 문제는 Views \ Web.config의 이전 네임 스페이스 참조였습니다. 나는 그것을에서 Project.WebAPI17
로 변경해야했다 .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>
아래와 같이 Name 속성을 사용하여 얻을 수 있습니다.
@System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
그게 당신이 찾고있는 건가요?
홈 컨트롤러로 이동하여 다음 코드를 복사하십시오.
Rename ActionResult
to String
public string Index()
return typeof(Controller).Assembly.GetName().Version.ToString() ;
run view
'program story' 카테고리의 다른 글
pycharm은 탭을 공백으로 자동으로 변환합니다. (0) | 2020.08.20 |
---|---|
Python에서 하위 프로세스, 다중 처리 및 스레드 중에서 결정합니까? (0) | 2020.08.20 |
두 개의 복잡한 개체를 비교하는 가장 좋은 방법 (0) | 2020.08.20 |
'URL'에서 'createObjectURL'실행 실패 : (0) | 2020.08.20 |
ES6 화살표 함수와 함께 jQuery $ (this) 사용 (이 바인딩 어휘) (0) | 2020.08.20 |