2012-05-04 4 views
1

Azure 웹 역할에서 어셈블리를 빌드 할 때 날짜/시간을 검색하려고합니다. retrieving the linker timestamp from the PE header으로 몇 가지 트릭을 보았습니다.하지만이 경우 Assembly.Location을 읽어야합니다. Azure 프로젝트에서는 작동하지 않습니다. 나는이 예외 얻을 :Azure 웹 역할에서 어셈블리 빌드 날짜 가져 오기

에서 NotSupportedException을 - 호출 된 회원은

아마도이 정보를 얻기의 더 나은 방법이 동적 어셈블리에서 지원되지 않습니다. 아마도 웹 역할이 배포 된 날짜/시간을 가져올 수 있습니까? 그것은 저를 위해 또한 작동 할 것입니다.

도움 주셔서 감사합니다.

답변

0

두 가지 별도의 사항을 묻습니다. 코드가 컴파일/빌드 된 시간이 역할이 전개 될 때와 크게 다를 수있는 가능성이 매우 높습니다. 따라서 동일한 날짜/시간을 가져올 수도 있고 그렇지 않을 수도 있습니다. 빌드를 제어하고 같은 시간에 배포하지 않으면 아무런 보장이 없습니다.

목적이 배포시기를 알고 자한다면이 날짜/시간을 여러 위치에 추가하고 역할 별 코드에서 직접 검색 할 수 있습니다. 역할에서 배포 시간을 얻을 수있는 방법이 있는지, 나중에 자세히 살펴볼 지 모르겠습니다.

여기에 몇 가지 제안을 즉시 내 마음에 온다 있습니다

  1. 이 서비스 구성에서 설정 "문자열"을 만들고 역할 특정 코드에서 그것을 읽었다. 이 두 프로세스가 별도로 실행되고 약간의 추가 코딩이 필요하기 때문에 Web Role 관련 W3WP.exe 프로세스에서 서비스 구성 설정을 직접 가져올 수 없습니다.

  2. 당신은 또한 더 다음과 같이 처리하기 시작 작업에서 서비스 구성 및 액세스 하나에 날짜/시간을 추가 할 수 있습니다 http://blogs.msdn.com/b/avkashchauhan/archive/2011/11/09/how-to-access-service-configuration-settings-in-windows-azure-startup-task.aspx

  3. 당신은 당신의 app.config 및 액세스 거기에 날짜/시간 설정을 추가 할 수 있습니다. 나는 여기에 설명했다 : http://blogs.msdn.com/b/avkashchauhan/archive/2011/10/25/reading-configuration-entries-using-system-configuration-configurationmanager-class-in-a-windows-azure-application.aspx

+0

나는 이것을 "다른 방법"의 질문 중 하나에 대답하기 때문에 이것을 가장 좋은 대답으로 표시하고 있습니다. 내 환경에서 작동하지 않는 이유는이 환경에서 작동하지 않는 웹 어셈블리의 위치를 ​​얻으려고했기 때문입니다. 그것은 별도의 "클래스 라이브러리"프로젝트의 어셈블리를 검사하면 작동합니다. –

0

당신이에 링크 된 솔루션에서 대신이 일을 :

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); 

이 일을보십시오 :

System.Reflection.Assembly assembly = typeof(AClassInMyAssembly).Assembly; 

나는 확실하지 않다 작동하지만, 나는 그것이 가능할 것이라고 생각한다. 그렇지 않은 경우 어셈블리 버전이 귀하의 목적에 부합하는지 여부를 고려해보십시오.

관련 문제