2012-08-12 3 views
1

ASP.NET 웹 응용 프로그램/사이트와 통합 할 수있는 일부 캐시 무효화 코드를 내 라이브러리에 구현하고 싶습니다. 이것은 URL의 끝에 버전 문자열을 추가하여 구현됩니다. 캐시 버스트를 제공하고자하는 기본 버전 공급자는 호스트 웹 사이트의 어셈블리 버전을 사용합니다.웹 응용 프로그램을 실행하는 어셈블리 버전 받기

현재, 이것은 내가이 버전 번호 추출하고있어 어떻게 본질적 : 생성 된 어셈블리는 적어도 응용 프로그램 인스턴스에 대한 내 샘플 테스트 사이트, Assembly를 들어, 불행하게도

HttpContext.Current 
      .ApplicationInstance 
      .GetType() 
      .Assembly 
      .GetName() 
      .Version 
      .ToString() 

이다 (나는 추측 global.asax 때문에 새 어셈블리로 컴파일 됨). Get web application assembly name, regardless of current executing assembly에서 SLAKs는 BaseType을 사용하여 실제 사이트 어셈블리 형식을 얻을 수 있다고 말하지만 사이트에서 global.asax 파일을 사용하지 않으면 BaseType은 BCL에서 무엇인가를 제공한다고 가정합니다.

ASP.NET 웹 응용 프로그램의 어셈블리 버전 번호를 추출하는 신뢰할 수있는 방법이 있습니까? 또한 응용 프로그램 개발자를위한 추가 빌드 단계가 필요하지 않은 고유 빌드 별 토큰을 생성하는 대체 방법에 대해서도 설명합니다.

+0

시도해주세요 .GetType() ..... 대신 – BozoJoe

답변

2

내 전략은 내 사용자 지정 형식 중에서 형식을 선택하고 런타임에이 형식 어셈블리의 버전 번호를 요청하는 것입니다.

typeof(SomeKnownType).Assembly.GetName().Version 
+0

이 라이브러리가 통합 된 사이트가 * my * 코드베이스 인 경우 작동합니다. 그러나 제 질문은 다른 사람들이 자신의 * 웹 사이트에 접속하는 나의 도서관에 관한 것입니다. 웹 사이트 어셈블리에있는 유형을 알 수있는 방법이 없습니다. – Jacob

+0

그런 다음 대리인 또는 호출 할 인터페이스를 구현하는 클래스로 피드를 구성하여 버전 정보를 가져옵니다. 이것은 자동이 아니지만 필요한 매개 변수를 완전히 제어 할 수 있습니다. –