использование устаревших сборок в приложении в стиле metro - PullRequest
14 голосов
/ 11 октября 2011

Я понимаю, что мы можем получить доступ к части .net apis и всем winrt apis в приложении в стиле metro, написанном на c #.Но как насчет других сторонних компонентов, предназначенных для .net 2.0 или 3.5 и т. Д., Мы сможем добавить их в качестве ссылок в проекте приложения в стиле metro?

1 Ответ

9 голосов
/ 11 октября 2011

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

Я создал библиотеку .NET с одним классом и использовал ее из приложения метро. Получил следующее предупреждение: 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 и может негативно повлиять на работу пользователя и может помешать общей стабильности системы.

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

...