1
votes

Comment puis-je référencer l'espace de noms Windows.System dans un projet Xamarin?

J'essaye d'ouvrir un fichier pdf sur le navigateur, acrobat ou tout autre programme pdf par défaut. Pour cela, je dois appeler LaunchFileAsync () et je dois faire référence à Windows.System pour pouvoir l'utiliser. Cependant, cela ne fonctionne pas et je ne peux appeler aucune référence.

J'ai essayé de rechercher une bibliothèque ou un package nuget spécifique, mais je n'ai rien trouvé. La documentation me dit simplement d'utiliser cet espace de noms mais elle ne dit rien sur la façon d'ajouter la référence. J'ai également essayé d'utiliser une approche différente en appelant System.Diagnostics.Process.Start (chemin) et certaines variantes, mais cela ne fonctionne pas avec Xamarin apparemment.

C'est essentiellement ce que j'essaie d'implémenter mais il n'y a pas d'événement d'espace de noms trouvé bien que j'aie essayé de l'implémenter.

string uriToLaunch = @"file://" + @file;


var uri = new Uri(uriToLaunch);


var success = await Windows.System.Launcher.LaunchUriAsync(uri);

Toute aide serait appréciée.


3 Réponses :


0
votes

Avez-vous essayé d'ajouter une référence d'assemblage dans le menu Référence? Dans l'Explorateur de solutions, cliquez avec le bouton droit sur votre projet et accédez à:

Add -> Reference -> Assemblies -> System.*

Assurez-vous également de ne pas utiliser de bibliothèques spécifiques à la plate-forme pour un projet mobile, car cela entraînera probablement des problèmes de compatibilité. .NET Standard est la voie à suivre.


0 commentaires

0
votes

Utilisez Xamarin.Essentials car il définit les différentes dépendances du système d'exploitation pour vous et sur UWP utilise le Windows.System.Launcher.LaunchUriAsync :

 Xamarin.Essentials.Launcher.OpenAsync

re: Xamarin Docs

Remarque : L'ouverture des URI basés sur file: // est très limitée dans UWP.


3 commentaires

J'ai essayé votre approche mais rien ne se passe. Le pdf n'est pas ouvert sur le navigateur ou l'acrobate. Est-ce que je manque quelque chose? J'ai essayé d'ouvrir le fichier en utilisant file: //. Voici ce que je fais: string uriToLaunch = @ "file: //" + @ "P: // Réception de l'inspection // Rapports d'inspection //" + filename + ".pdf"; var uri = nouvel Uri (uriToLaunch); attendre Xamarin.Essentials.Launcher.OpenAsync (uri);


... @ "file: //" + @ "P: // Réception d'inspe ... n'est pas un file: // uri valide


Que suis-je censé utiliser à la place?



0
votes

Si vous ne ciblez pas encore .NET Standard, assurez-vous de le faire si vous souhaitez utiliser les bibliothèques système. Il existe quelques tutoriels à ce sujet, mais je vous suggère fortement de sauvegarder votre projet avant de passer de PCL à .NET Standard


2 commentaires

Comment puis-je m'assurer que j'utilise une bibliothèque .NET Standard? Je ne me souviens pas du type de projet que j'ai choisi lors de la création de mon projet.


Pour moi, lorsque je navigue vers mon dossier de projet principal et que je vais dans les options -> Général, la première ligne dit "Cadre cible -> .NET Standard 2.0". Je suis sur VS Mac, je ne sais pas si c'est le même emplacement sur Windows