2011-10-11 4 views
14

C#으로 작성된 Metro 스타일 앱에서 .net apis 및 모든 winrt apis의 일부에 액세스 할 수 있음을 이해합니다. 그러나 .net 2.0 또는 3.5 등을 타겟팅하는 다른 타사 구성 요소는 무엇입니까? 메트로 스타일 앱 프로젝트에서 참조로 추가 할 수 있습니까?메트로 스타일 앱에서 기존 어셈블리 사용

답변

9

예, 때때로 메트로 응용 프로그램에서 타사 .NET 어셈블리를 참조 할 수 있습니다. 앱과 동일한 폴더에 배포해야하며 지원되는 API 만 사용해야합니다.

하나의 클래스로 .NET 라이브러리를 만들고 메트로 앱에서 사용했습니다. 다음 경고 메시지가 나타납니다. The project 'EmptyLib' cannot be referenced.하지만 앱이 빌드되어 디버깅하고 디버거에서 클래스의 인스턴스를 탐색 할 수있었습니다.

그럼 Windows App 인증을 통과했습니다. 실패했습니다 (아래 세부 정보 참조).

인 컴파일러 최적화를 전환 한 후.


처음 실패한 것은 라이브러리가 지원되지 않는 API를 사용했기 때문입니다. 세부 정보 :

오류 :이 응용 프로그램은 지원되는 API 검사에 실패했습니다. mscorlib에있는

  • API의 System.Runtime.CompilerServices.CompilationRelaxationsAttribute는 PUBLICKEYTOKEN = B77A5C561934E089이 응용 프로그램 유형이 지원되지 않습니다. EmptyLib.dll이이 API를 호출합니다.

  • MSCORLIB의 API System.Runtime.CompilerServices.CompilationRelaxationsAttribute. # ctor (System.Int32), PUBLICKEYTOKEN = B77A5C561934E089는이 응용 프로그램 유형에서 지원되지 않습니다. EmptyLib.dll이이 API를 호출합니다.

해결되지 않은 경우 영향 : 응용 프로그램이 Metro 스타일 앱용 Windows SDK에없는 하나 이상의 API를 사용 중입니다. 지원되지 않는 API를 사용하면 Windows Store 정책을 위반하며 사용자 환경에 부정적인 영향을 줄 수 있으며 전반적인 시스템 안정성을 저해 할 수 있습니다.

해결 방법 : 수정해야 할 정확한 API에 대해서는 위의 오류 메시지 2를 참조하십시오. 지원되는 API 목록을 보려면 Metro 스타일 앱용 Windows SDK를 참조하십시오.

+5

라이브러리 작성자가 라이브러리를 데스크톱과 Metro에서 모두 사용할 수있게하려면 "Portable Library"프로젝트를 사용하여 보편적으로 지원되는 API 만 사용해야합니다. –

+1

참조 http://msdn.microsoft.com/en-us/library/windows/apps/br230301(v=VS.85).aspx#KnowTheRules –

관련 문제