UWP: сбой теста WACK при проверке метаданных среды выполнения Windows

У меня есть приложение C #, предназначенное для настольной платформы Windows-10. Приложение C # обращается к нативному компоненту, написанному на C ++. Мой родной код C ++ имеет расширения компонентов Visual C ++ (C ++ / CX).

Я пытаюсь запустить тест WACK для своего приложения. & Я вижу эту ошибку:

Обнаружена ошибка: Общий тест правильности метаданных обнаружил следующие ошибки: перегруженный метод XXX в yyy.winmd имеют такое же количество входных параметров без одного, который имеет DefaultOverloadAttribute. Точно один метод перегрузки должен иметь DefaultOverloadAttribute

Влияние, если не зафиксировано: Магазин Windows не разрешает приложения, которые не проходят проверку метаданных среды выполнения Windows.

Как исправить: Убедитесь, что компилятор, который вы используете для генерации типов среды выполнения Windows, соответствует спецификациям среды выполнения Windows

Раньше это нормально работало с VS-2015 Update 2. Я установил VS-2015 Update-3 сегодня & с тех пор я вижу эту неудачу.

Странно то, что перегруженный метод, упомянутый в Сообщение об ошибке совсем не перегружен.

Я проверил это Страница MSDN но не смог найти никакого решения.

Мои детали VS следующие:

MS VS Professional 2015

Версия 14.0.25425.01 Обновление 3

MS .NET Framework

Версия 4.6.01038

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

0

Решение

Кажется, это проблема компилятора VS. В основном WACK-инструмент жалуется на любое имя пользователя, определяемое методом «близко»

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

При дальнейшем копании я обнаружил, что SQLite Также, похоже, есть похожие проблемы. Это именно та проблема, которую я затрагиваю.

Это решение нанятый SQLite.

Посмотрев на решение SQLite, я изменил имя метода изблизко«до»Closedb«и теперь мои испытания WACK проходят.

На момент публикации единственное решение этой проблемы, похоже, не имеет метода с именем «близко«в вашем коде.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]