4

Bonjour J'ai un projet Silverlight pour WP8.1 qui est un jeu. J'utilise un backgroundTask pour alerter l'utilisateur sur la dernière fois qu'il a joué, s'il est trop lent pour se conformer, je voudrais faire un appel au serveur de la bagroundTask pour démissionner des jeux. La tâche backgroundTask est créée en utilisant stackoverflow et this blog, juste des implémentations de base de backgroundTask. Puis j'installe le paquet NuGet Microsoft.Azure.Mobile.Client et tout va bien, je fais ensuite une compilation, tout réussit.WP Silverlight BackgroundTask Communication avec Azure

L'application installe et splashscreen apparaît, je reçois une erreur dans le projet principal lors de l'initialisation de MobileServiceClient dans App.xaml.cs

public MobileServiceClient MobileService = new MobileServiceClient(
     "https://xxxxx.azurewebsites.net" 
    ); 

L'exception dans les Etats ligne ci-dessus:

Une exception de type 'System.IO.FileNotFoundException' s'est produite dans mscorlib.ni.dll mais n'a pas été traitée dans le code utilisateur Informations supplémentaires: Impossible de charger le fichier ou l'assembly 'System.Runtime.InteropServices, Version = 4.0.10.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a 'ou l'une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.

La seule modification a été l'installation du package NuGet dans le projet backgroundTask. La sortie de trace de pile pour l'exception ci-dessus.

à System.ModuleHandle.ResolveType (module RuntimeModule, Int32 typeToken, IntPtr * typeInstArgs, Int32 typeInstCount, IntPtr * methodInstArgs, Int32 methodInstCount, le type ObjectHandleOnStack) à System.ModuleHandle.ResolveTypeHandleInternal (module RuntimeModule, Int32 typeToken, RuntimeTypeHandle [] typeInstantiationContext, RuntimeTypeHandle [] methodInstantiationContext) à System.Reflection.RuntimeModule.ResolveType (Int32 MetadataToken, tapez [] genericTypeArguments, type [] genericMethodArguments) à System.Reflection.CustomAttribute.FilterCustomAttributeRecord (CustomAttributeRecord caRecord, portée MetadataImport, Assemblée & lastAptcaOkAssembly, RuntimeModule decoratedModule, MétadonnéesT Oken decoratedToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, objet [] attributs, derivedAttributes IList, RuntimeType & attributeType, IRuntimeMethodInfo & ctor, booléens & ctorHasParameters, booléens & isVarArg) à System.Reflection.CustomAttribute.GetCustomAttributes (RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent) à System.Reflection.CustomAttribute.GetCustomAttributes (RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean isDecoratedTargetSecurityTransparent) à System.Reflection.CustomAttribute.GetCustomAttributes (RuntimeAss Ensemble embly, RuntimeType caType) à System.Reflection.RuntimeAssembly.GetCustomAttributes (Type attributeType, héritent Boolean) à System.Attribute.GetCustomAttributes (élément d'assemblage, de type attributeType, héritent booléen) à Microsoft.WindowsAzure.MobileServices.PlatformInformationExtensions.GetVersionFromAssemblyFileVersion (IPlatformInformation platformInformation) à Microsoft.WindowsAzure.MobileServices.PlatformInformation.get_Version() à Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.GetUserAgentHeader() à Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient..ctor (Chariot IEnumerable`1, Uri ApplicationUri, String InstallationID) à Microsoft.WindowsAzure.MobileServices.MobileServiceClient..ctor (Uri mobileAppUri, HttpMessageHandler [] Chariot) à Microsoft.WindowsAzure.MobileServices.MobileServiceClient..ctor (String mobileAppUri, HttpMessageHandler []) gestionnaires à BC_Menu.App..ctor()

Je n'ai pas été en mesure de résoudre ce problème.

extra

Je suis en mesure de faire des appels normaux http sur le Web en utilisant le proposed code, reproduit ici:

BackgroundTaskDeferral _deferral; 

public async void Run(IBackgroundTaskInstance taskInstance) 
{ 
    _deferral = taskInstance.GetDeferral(); 
    // your async code 
    _deferral.Complete(); 
} 

mise à jour basée sur Adrian Hall Réponse

Le Le code fonctionne, mon application frontale peut communiquer avec le serveur et tout. Le backgroundTask, peut extraire des informations de l'appareil tout va bien, tout compile et s'exécute. Puis j'ajoute le paquet NuGet au backgroundTask et soudainement l'erreur ci-dessus apparaît, quand je déploie cette solution sur le client.

Je cours VS2015, Win10, et ai installé v2.0.1 de Microsoft.Azure.Mobile.Client. J'ai vu des comportements étranges avec des projets silverlight sur win10 before.

Répondre

2

L'erreur indique un problème avec votre installation .NET - l'erreur est dans mscorlib (la bibliothèque de base pour .NET). Essayez d'ajouter une référence à la bibliothèque spécifique dont vous avez besoin. Assurez-vous également que vous avez installé v2.0.1 (ou version ultérieure) ou la bibliothèque Microsoft.Azure.Mobile.Client.

+0

C'est la version qui est installée, je vais essayer de l'amender. Donc l'installation du paquet dans un projet va influencer les dépendances dans un autre? Juste pour clarifier? – JTIM

+0

Je suis un peu incertain maintenant que j'ai relu votre réponse. Le code fonctionne, mon application frontale peut communiquer avec le serveur et tout. Le backgroundTask, peut extraire des informations de l'appareil tout va bien, tout compile et s'exécute. J'ajoute ensuite le paquet NuGet au backgroundTask et soudainement l'erreur ci-dessus apparaît. Je cours VS2015, Win10, et ai v2.0.1 installé de Microsoft.Azure.Mobile.Client. – JTIM

+0

@JTIM Je pensais que les tâches d'arrière-plan devaient toujours être WPA, pas silverlight? Pouvez-vous essayer de le placer dans un assemblage séparé et de changer la cible en non-Silverlight? –