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

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


person Cui Pengfei 崔鹏飞    schedule 11.10.2011    source источник


Ответы (1)


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

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

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

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


Причина, по которой это не удалось в первый раз, заключалась в том, что библиотека использовала неподдерживаемые 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 нужно исправить. Список поддерживаемых API для использования см. в Windows SDK для приложений в стиле Metro.

person Roman Boiko    schedule 11.10.2011
comment
Если авторы библиотек хотят, чтобы их библиотеки можно было использовать как на рабочем столе, так и в Metro, им следует использовать проекты Portable Library, чтобы убедиться, что они используют только универсально поддерживаемые API. - person Pavel Minaev; 11.10.2011
comment
См. также msdn.microsoft .com/en-us/library/windows/apps/ - person Roman Boiko; 12.10.2011