2016-08-19 6 views
0

Windows-10 데스크톱 플랫폼을 대상으로하는 C# 응용 프로그램이 있습니다. C# 응용 프로그램은 C++로 작성된 원시 구성 요소를 호출합니다. 내 기본 C++ 코드에는 Visual C++ 구성 요소 확장 (C++/CX)이 있습니다. 내 앱 괴짜 테스트를 실행하려고
이 오류보고하고 & :Windows 런타임 메타 데이터 유효성 검사에서 UWP : WACK 테스트가 실패했습니다.

Error Found: The general metadata correctness test detected the following errors: The overloaded method XXX in yyy.winmd have the same number of in parameters without one that has DefaultOverloadAttribute. Exactly one method overload must have DefaultOverloadAttribute
Impact if not fixed: Windows store doesnt allow apps that don't pass Windows Runtime Metadata Validation.
How to fix: Please ensure that the compiler you are using to generate your Windows Runtime types is up to date with the Windows Runtime specifications

이 VS-2015 업데이트 2. 설치와 함께 잘 작동하는 데 사용을 VS-2015 업데이트 3 오늘 & 그때부터 나는이 실패를보고있다.
이상한 점은 오류 보고서에 언급 된 오버로드 된 메서드가 전혀 오버로드되지 않는다는 것입니다.
나는이 MSDN page을 확인했지만 해결책을 찾지 못했습니다. 다음과 같이
내 VS 세부 사항은 다음과 같습니다

MS VS Professional 2015
Version 14.0.25425.01 Update 3
MS .NET Framework
Version 4.6.01038

나는 언제 어디서나 Windows 런타임 사양을 찾을 수 couldnt한다. VS Update-3을 설치 한 후에 다른 것이 필요합니까?

+0

우리는 한 번 살펴보고 싶습니다. Microsoft가 조사 할 수 있도록 repro 프로젝트로 Microsoft.com에있는 unnir에서 연락을 주시겠습니까? –

답변

1

이것은 VS 컴파일러 문제인 것 같습니다. 기본적으로 괴짜 도구는 사용자 정의 메소드 이름 "닫기"


컴파일러는 사용자 정의 심판 클래스가 명시 적으로 소멸자를 가지고 때마다 IClosable 구현을 추가에 대해 불평한다. 그런 다음 소멸자를 "IClosable :: Close"메서드로 매핑합니다. 그러나 컴파일러는 "닫기"이라는 사용자 정의 메서드에 대해 불평하지 않습니다.


더 자세히 조사 할 때 SQLite에도 유사한 문제가있는 것으로 나타났습니다. 이것은 정확하게 제가 부딪히는 문제입니다.
이것은 SQLite에서 사용하는 solution입니다.
SQLite 솔루션을 살펴본 후 메서드 이름을 "닫기"에서 "Closedb"으로 수정했습니다. 이제 WACK 테스트가 통과됩니다.
이 게시 시점에서이 문제의 유일한 해결책은 코드에 "닫기"이라는 메서드가없는 것 같습니다.