Silverlight 프로젝트에서 프로그램 집합의 인용 정보를 얻습니다

1886 단어 silverlight
온전한.Net 환경에서 프로그램 세트에 대한 참조 정보를 얻으려면 다음 코드를 사용합니다.
var assembly = Assembly.LoadFrom(assemblyFile);

var references = assembly.GetReferencedAssemblies();

획득한references 대상은 AssemblyName 그룹입니다. 이 대상은 프로그램 집합의 모든 인용 정보를 포함하고 AssemblyName 클래스에 대한 정보는 참고할 수 있습니다 MSDN의 해당 문서.
모두가 알다시피 프로그램 집합의 인용 정보를 얻는 것은 플러그인식 개발에 매우 중요하지만 Silverlight 환경에서Assembly류는 그런 방법이 없어요. 우리는 반사로 프로그램 집합의 인용 정보를 얻을 수 없다.다행히도 우리는 기원된 Mono.Cecil 프로젝트가 있고, Cecil은 이미 Silverlight를 완전하게 지원하기 시작했기 때문에 프로그램 집합의 인용 정보를 얻기 위해 Cecil이 필요하다.
우선 Cecil의 원본 코드를 가져와서 Silverlight 라이브러리로 컴파일해야 합니다. 이것은 매우 쉽습니다.Cecil의 github 사이트 액세스만 최신 버전의 원본 코드를 다운로드한 후 설정을silverlight 로 수정합니다release 또는 silverlightdebug를 컴파일하면 됩니다.
그런 다음 Silverlight 프로젝트에 Cecil에 대한 참조를 추가하면 사용할 수 있습니다. Cecil을 사용하여 프로그램 세트를 가져오는 코드는 다음과 같습니다.
var entryPointPart = Deployment.Current.Parts.First(asmPart => asmPart.Source == assemblyName);

var entryPointResourceInfo = Application.GetResourceStream(new Uri(entryPointPart.Source, UriKind.Relative));

var asmDef = AssemblyDefinition.ReadAssembly(entryPointResourceInfo.Stream);

var references = asmDef.MainModule.AssemblyReferences.ToArray();

이렇게 획득한references 대상은 Mono입니다.Cecil.AssemblyNameReference 배열, AssemblyNameReference 및.Net 환경의 AssemblyName은 프로그램 집합의 모든 참조 정보를 포함하는 것과 유사합니다.

좋은 웹페이지 즐겨찾기