어셈블리 버전을 올바르게 설정하고 리플렉션으로 얻는 데 문제가있었습니다. 제가 해결 방법을 찾았지만이처럼 행동하는 이유는 내가 그것을로드하고 다음 코드 버전을 읽고있다, 어셈블리 버전을 설정하고 리플렉션으로 가져 오기 - 항상 버전 1.0.0.0?
내가 클래스 라이브러리 프로젝트를 가지고 ... 여전히 궁금 :var assembly = Assembly.LoadFrom(assemblyName);
var version= assembly.GetName().Version;
그리고
assembly {AssemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null}
version "1.0.0.0"
을하지만 지금은 2.0.0.0의 값으로 조립 버전과 파일 버전 필드 클래스 라이브러리 프로젝트에서 변경되었습니다 좋은 결과를 얻을. 컴파일하고 IL DASM을 실행하여 두 라이브러리를 비교했습니다.
Metastfo의 메인 창, 즉 Metainfo의 모든 곳에서 새 라이브러리의 버전이 2.0.0.0이고 이전 라이브러리의 버전이 1.0.0.0이므로 모든 것이 정확하다는 것이 기뻤습니다.
하지만 난 버전 2.0.0.0와 어셈블리를로드 한하고,이 결과 다시 내 응용 프로그램에 갔다 :
assembly {AssemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null}
version "1.0.0.0"
그래서 반사 나에게 좋은 버전 값을 반환하지 않습니다.
FileVersionInfo.GetVersionInfo(assemblyName).FileVersion;
가 지금은 적절한 결과를 얻을 : 해결 방법은 된 FileVersionInfo 클래스를 사용하는 것입니다.
내 질문은 다음과 같습니다. 리플렉션 메커니즘을 통해 좋은 버전을 검색하려면 클래스 라이브러리 프로젝트에서 변경해야 할 다른 항목이 있습니까? 왜 IL DASM이 적절한 버전을 나타내고 반사가 아닌가? 난 항상 일리노이 DASM이 반사를 활용한다고 생각했지만 지금은 나에게 달려있다.
모든 해답을 가져 주셔서 감사합니다.
ildasm은 리플렉션을 사용하지 않습니다. 저레벨 IL 파서를 사용합니다. –