Question

J'ai commencé à travailler sur le portage d'une application que j'ai écrite pour le déploiement dans l'App Store Windows 8.Cela nécessite que la demande soit écrite contre le sous-ensemble de la structure .NET.Ma candidature suit une architecture dans laquelle la fonctionnalité principale se trouve dans sa propre dll, et des éléments tels que l'accès du système de fichiers sont effectués via IOC.Fondamentalement, cela signifie que la seule dépendance pour la DLL de base est le système.Pour cette raison, je pensais que le portage serait une brise - configurez mes valeurs IOC et méfiez-vous une interface graphique, alors je serai prêt à partir.Seulement, je ne peux même pas référencer ma DLL de base de l'application Windows Store (A.k.a. Metro App).

ai-je manqué quelque chose?Devoir réellement réécrire mon dll de base juste pour l'inclusion dans l'App Store Windows 8?On nous dit que si vous utilisez une bonne architecture, le portant sera une brise, et c'est ce que j'ai fait.Cela vient d'être un grand mensonge?

Était-ce utile?

La solution

Les applications de Windows Store (anciennement appelée l'application de style métro) sont limitées à l'utilisation du profil de base .NET.Je mets des détails sur le profil principal de mon Réponse à cette question .Voir Conversion de votre code Framework existant Dans cet article Plus de détails.Ce n'est pas votre architecture, c'est le sous-ensemble du .NET Framework disponible pour une application Windows Store.Vous devrez peut-être compléter certains des types que vous utilisez dans .NET avec des types WinRT à la place.

Autres conseils

Je n'ai pas de connaissances approfondies et je vais essayer de stict aux faits comme je les comprends. La structure de métro ajoute des fonctionnalités et limite la fonctionnalité. Il existe de lourdes restrictions de sécurité et de vastes segments de la framework complet qui ne sont pas disponibles (par exemple, vous ne pouvez pas utiliser System.Data, certaines des méthodes de système.IO et d'accès au fichier ont radicalement modifié). Une application de métro est isolée, vous ne pourrez pas récupérer tous les fichiers sur le disque dur comme vous pourriez dans une application standard (mon opinion qui est, en plus de la sécurité en isolement, c'est un encouragement à vous infliger dans la Cloud pour les besoins de stockage).

Sauf si les choses ont changé, Pinvoke est limitée aux méthodes d'API Win32 "approuvées".

Voir ce lien pour certaines alternatives aux besoins courants de l'API Win32: http://msdn.microsoft.com/en-us/library/windows/apps/hh464945.aspx

Voir ce lien pour l'API de Win32 / COM agréé: http://msdn.microsoft.com/en-us/library/windows/apps/br205762.aspx

Il est difficile de dire si une "bonne" architecture sera une brise à porter sans savoir ce qui est dans le code dans cette architecture. Dans mon cadre utilitaire, j'ai eu des choses qui ont été portées très facilement (ou au moins étaient simples) et des choses qui étaient un lavage complet qui nécessitait beaucoup de réécriture (la perte de System.Data par exemple est un endroit endormi pour moi). Il y a des choses qui peuvent être bien conçues, mais lorsque vous retirez le code de sous-couche dans le cadre ou l'API, il a été écrit avec cela nécessitera une réécriture.

J'ai eu le même problème: un projet d'application de métro Ne chargez pas la DLL créer avec cadre .4.J'ai changé le cadre de 4 à 3,5 pour la DLL et maintenant le projet de métro les voit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top