WinRT и DLL: что именно я могу использовать?
============================================

 Мне не все понятно, поэтому я надеюсь, что кто-то знает ответ. Я использую C # Json.Net и C # HtmlAgilityPack, созданные из источников для «Any CPU». Я заметил, что оба они включают в себя директивы, которые ссылаются на сборки, которые, похоже, не доступны в Metro, но оба они прекрасно строят. 

 Если я ссылаюсь на них, значит ли это, что мое приложение будет thunk на неуправляемый код? 

 Что именно заставляет thunking использовать неизменный код? 

 Почему DLL разрешено ссылаться на сборки, которые недоступны для WinRT, а мое приложение - нет? 

 Будет ли это окончить процесс одобрения магазина Windows? 

 Каковы общие правила для DLL, которые я включаю в приложение, о которых мне нужно беспокоиться? 

 Заранее спасибо! 

 При разработке приложений, ориентированных на WinRT, приложение должно использовать только API, доступный в Windows 8 WinRT. API определены в файлах WinMD. Если приложение использует API рабочего стола, оно будет отклонено во время процесса утверждения магазина Windows. 

 Представьте себе эту сцену. Вы разработали приложение WinRT, которое использует .NET DLL из настольного режима (клиентский профиль). Приложение развернуто в хранилище Windows, и пользователь загружает его на планшет ARM. Приложение выйдет из строя, так как у него нет DLL на рабочем столе (клиент) .NET на устройствах ARM. 

 поэтому это подводит нас к вопросу о том, какие классы .NET мы можем использовать при разработке приложений для WinRT. В статье <http://kishore1021.wordpress.com/2012/08/06/what-is-portable-class-library-project-in-visual-studio-2012-net-4-5/> перечислены доступные классы .NET для разработки приложений WinRT.