2016-08-19 11 views
0

У меня есть приложение C#, предназначенное для настольной платформы Windows-10. Приложение C# вызывает нативный компонент, написанный на C++. У моего родного кода на C++ есть расширения компонента Visual C++ (C++/CX).
Я пытаюсь запустить тест Вак для моего приложения & Я вижу эту ошибку:UWP: проверка WACK при проверке метаданных Windows Runtime

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 Update 2. Я установил VS-2015 Update-3 сегодня & с тех пор Я вижу эту неудачу.
Странная вещь заключается в том, что перегруженный метод, упомянутый в отчете об ошибке , не перегружен вообще.
Я проверил этот MSDN page, но не смог найти решение.
My VS детали следующим образом:

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

Я не смог найти какую-либо характеристику среды выполнения Windows в любом месте. Нужно ли мне что-нибудь добавить после установки VS Update-3?

+0

Мы хотели бы посмотреть. Не могли бы вы обратиться ко мне за то, что я не согласен с Microsoft dot com с репрезентативным проектом, чтобы мы могли исследовать? –

ответ

1

Это, похоже, проблема компилятора VS. В основном WACK инструмент жалуется на любой заданной пользователем имя метода «Закрыть»


компилятор добавляет реализацию IClosable всякий раз, когда определенный пользователем исх класс имеет явный деструктор. Затем он отображает деструктор на «IClosable :: Close». Но компилятор не жалуется на пользовательский метод с именем «Close».


При дальнейшей копании я обнаружил, что у SQLite также есть похожие проблемы. Это именно та проблема, с которой я тоже сталкиваюсь.
Это solution, используемый SQLite.
После просмотра решения SQLite я изменил свое имя метода с «Закрыть» на «Closedb», и теперь мои тесты WACK проходят.
С этой пометкой единственное разрешение для этой проблемы похоже на отсутствие метода с именем «Close» в вашем коде.