Использование устаревших ассемблеров в стиле метро

Я понимаю, что мы можем получить доступ к части .net apis и all the winrt apis в приложении стиля метро, ​​написанном на С#. Но как насчет других сторонних компонентов, которые нацелены на .net 2.0 или 3.5 и т.д. мы сможем добавить их в качестве ссылок в проект приложения стиля метро?

Ответы

Ответ 1

Да, иногда вы можете ссылаться на сторонние сборки .NET из приложений Metro. Они должны быть развернуты в той же папке, что и ваше приложение, и использовать только поддерживаемые API.

Я создал библиотеку .NET с одним классом и использовал ее из приложения metro. Появилось следующее предупреждение: The project 'EmptyLib' cannot be referenced. Но приложение было создано, и я смог его отладить и изучить экземпляр моего класса в отладчике.

Затем я попытался пройти сертификацию Windows App. Это не удалось (см. Подробности ниже).

После включения оптимизации компилятора для сертификации приложений передано.


Причина, по которой он не удалось в первый раз, заключался в том, что библиотека использовала не поддерживаемые API. Подробности:

Ошибка: этому приложению не удалось проверить API-интерфейс.

  • API System.Runtime.CompilerServices.CompilationRelaxationsAttribute в MSCORLIB, PUBLICKEYTOKEN = B77A5C561934E089 не поддерживается для этого типа приложения. EmptyLib.dll вызывает этот API.

  • API System.Runtime.CompilerServices.CompilationRelaxationsAttribute. # ctor (System.Int32) в MSCORLIB, PUBLICKEYTOKEN = B77A5C561934E089 не поддерживается для этого типа приложения. EmptyLib.dll вызывает этот API.

Воздействие, если не исправлено: приложение использует один или несколько API, которые не входят в Windows SDK для приложений Metro. Использование неподдерживаемых API-интерфейсов нарушает политику Windows Store и может оказывать негативное влияние на пользовательский интерфейс и может препятствовать общей стабильности системы.

Как исправить: посмотрите на сообщения об ошибках выше2 для точного API, которые необходимо устранить. Обратитесь к Windows SDK для приложений стиля Metro для поддерживаемого списка используемых API.