8
votes

Construire des problèmes avec l'emballage SQLite-WinRT

J'ai du mal à trouver mon application pour créer une cible de bras après avoir ajouté l'emballage de la base de données SQLITE-WINRT. Je pourrais reproduire cela avec une simple application de test comme suit:

(Ceci est fait dans Visual Studio 2013.)

  1. Créez une application universelle Windows 8.1 vide (WinRT)
  2. Télécharger sqlite pour Windows Phone 8.1 sqlite pour Windows Runtime (Windows 8.1) Outils / Extensions et mises à jour . Ajoutez-les aux références de projets respectifs.
  3. à l'aide de Nuget, ajoutez sqlite-winrt package à chaque projet.
  4. Construire pour X86 (machine locale ou émulateur de téléphone) -> Pas de problèmes.
  5. Build for Bras (Dispositif téléphonique) -> Erreur de construction indiquée ci-dessous (indépendante des constructions de débogage ou de libération).

    Il y avait une inadéquation entre l'architecture du processeur du projet étant construite "bras" et l'architecture de processeur "x86", du fichier de mise en œuvre "C: \ utilisateurs \ jr \ documents \ Visual Studio 2015 \ Projets \ SQLite- Test \ packages \ sqlite-winrt.3.8.7.1 \ lib \ wpa81 \ sqlitewinrt.dll "pour" c: \ users \ jr \ documents \ Visual Studio 2015 \ Projets \ SQLite-Test \ Packages \ SQLite-WinRt.3.8.7.1 \ lib \ wpa81 \ sqlitewinrt.winmd ". Cette inadéquation peut provoquer des défaillances d'exécution. Veuillez envisager de modifier l'architecture de processeur ciblée de votre projet via le gestionnaire de configuration afin d'aligner les architectures de processeur entre votre projet de projet et votre fichier de mise en œuvre, ou choisissez un fichier WinMD avec un fichier de mise en œuvre qui contient une architecture de processeur qui correspond à l'architecture de votre processeur ciblée de votre projet.

    J'ai posté un petit projet de test ici (Téléphone Windows 8.1 Projet vide, ajouté SQLite, ajouté SQLite-WinRT via Nuget).


7 commentaires

essaye ça. Accédez à votre gestionnaire de configuration de votre construction et définissez la plate-forme pour que votre Windows et Windows Phon au bras.


Merci mais ce n'était pas ça. Quand j'ai dit "Construire pour le bras", je voulais dire la cible de plate-forme définie sur le bras.


La même chose me arrive. Quelque comment la plate-forme cible des paramètres de construction de mon projet a été définie sur n'importe quel CPU qui enveloppait ce problème même si mon cadre de construction était un bras


Je vais +1 votre réponse car il s'agit d'une solution valide dans des scénarios similaires avec les mêmes symptômes. Malheureusement, cela ne résout pas mon problème, alors je le laisse ouverte.


@Muhammadsaifullah J'ai créé un petit projet de test (voir le lien ci-dessus). Si vous pouvez repérer une erreur de configuration que j'ai négligée, mal comprise, ... veuillez le signaler et la prime est à vous.


Vous devez supprimer SQLite for WinRT


J'ai mis à jour ma réponse. Si vous avez toujours le problème, faites-le moi savoir.


3 Réponses :


3
votes

Allez à Propriétés Propriétés Ouvrez l'onglet Construction et définissez la plate-forme cible sur bras Entrez la description de l'image ici

edit Vous avez ajouté WinRT SQLite. Il est buid sur x86 et lorsque vous souhaitez la construire sur l'architecture de processus ARM, il ne peut pas construire que vous devez supprimer la DLL Winrtsqlite que votre projet fonctionnera bien. Voici code

J'espère que cela aide


2 commentaires

Merci. Mais comme déjà discuté de la réponse de Frenk91, éliminer le sujet de la question n'est pas une solution. Selon la page du projet à SQLWINRT.CODEPLEX.COM Windows Phone et, par conséquent, les cibles du bras doivent être soutenues par ce Nuget paquet. Je suis tout à fait d'accord: je semble faire quelque chose de mal, mais qu'est-ce que c'est?


Cette réponse a gagné deux votes «utiles» dans une version antérieure. L'actuel n'est pas significatif.



0
votes

J'ai téléchargé votre projet et sur les références que j'ai constatées que vous utilisiez SQLite-WinRT et SQLite pour Windows Phone 8.1, vous n'avez pas besoin des deux.

Dès que vous supprimez SQLite-WinRT, votre projet commence à compiler.

EDIT:

Dans une application universelle Vous devez ajouter uniquement les bonnes références, si un projet téléphonique ajoutez simplement SQLite pour Windows Phone 8.1, à la place de l'application Windows 8.1, ajoutez uniquement le SQLITE-WINRT


9 commentaires

SQLiteWinRT est le wrapper de la base de données. Si je supplie que je dois écrire le mien et je ne me sens pas assez confiant pour cela.


Vous n'avez pas besoin d'une enveloppe, il suffit d'ajouter ce package Nuget Nuget.org/packages /sqlite-net/1.0.8


Ce serait une autre wrapper et une alternative réalisable. J'ai trouvé que SQLite-WinRT est plus approprié à mes besoins.


Il n'y a aucun moyen d'utiliser SQLite-WinRT car ne contient pas de version pour bras. J'ai utilisé SQLite-Net sur l'un de mes projets, vous pouvez trouver la documentation sur github Github.com/praeclarum / sqlite-net .


Pour être plus précis sur mon choix (j'utilise en réalité sqlite.net pour le moment): j'utilise des types de données dans mon application qui ne sont pas pris en charge par sqite.net. Afin de les convertir en types pris en charge dans SQLite, j'ai besoin de modifier sqlite.net, ce qui provoque de nouveaux problèmes. De plus, pensez au codage AOBUT pour différentes plates-formes et maintenabilité, il n'y a rien de similaire à sqlite.net pour Android et iOS.


Si vous écrivez une application de plate-forme croix à l'aide de C # sous forme de langage SQLite-Net est parfait, car supportez plusieurs plateformes. Mais le problème d'avoir votre type non pris en charge reste toujours en reste, peut-être que vous pouvez le sérialiser, puis enregistrer ce type sur la base de données


Eh bien, la chose est que, sinon toutes les sources que j'ai trouvées en fait, affirmez que SQLite-WinRT prend en charge Windows Phone.


Laissez-nous Continuer cette discussion en chat .


Ok, j'ai appris ma leçon de celle-ci. Il n'y a pas de réponse correcte jusqu'à présent. Les deux suggèrent de supprimer le module en question, ce qui n'est pas une solution. Maintenant, la question était juste suscitée 5 fois plus encore aujourd'hui, de sorte que d'autres semblent avoir le même problème et la supprimer ne serait pas agréable. La prime sera automatiquement attribuée à une mauvaise réponse à moins que je le fasse. J'ai donc décidé de le donner à cette réponse car la discussion au moins souligne des alternatives et la question a finalement été comprise. La réponse est erronée néanmoins. J'ai posté une solution de contournement.



1
votes

Une solution de contournement pour les problèmes avec le package Nuget ajoute les sources SQLITE-WINRT à votre téléphone ou à votre application universelle.

  1. Installez SQLite pour Windows Phone 8.1 (et pour Universal Windows Runtime (Windows 8.1)) dans Outils -> Extensions et mises à jour Si non fait déjà
  2. ajoutez des références aux projets respectifs
  3. Téléchargez le Sources pour l'emballage SQLITE-WINRT
  4. Copiez le SQLITEWINRTPHONEHONE81 (RT) (et SQLITEWINRT81 si nécessaire) Dossiers à votre solution
  5. Ajoutez les projets à votre solution dans Visual Studio (clic droit sur la solution -> Ajouter -> Projet existant )
  6. ajoutez des références aux projets respectifs
  7. Modifiez les références pour le (s) projet SQLITE-WINRT pour pointer vers la version correcte de SQLite (Projet de clic droit -> Propriétés -> Porperties communes -> Références ): Ajouter une référence à la version SQLite actuelle de votre projet et supprimez l'ancienne référence
  8. Construisez votre solution

     Propriétés du projet


0 commentaires