c # - Brug af Windows 10 API'er (UWP) i Desktop app (WPF)

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har forsøgt som beskrevet i dette indlæg (https://blogs.windows.com/buildingapps/2017/01/25/calling-windows-10-apis-desktop-application/#PdHk3f4QeTSsSvWy.97) for at bestemme positionen med klasse Geolocator. Det virker fint, når jeg tilføjer en reference til
C: \ Programmer (x86) \ Windows Kits \ 10 \ UnionMetadata \ 10.0.17134.0 \ Windows.winmd
i stedet for
C: \ Programmer (x86) \ Windows Kits \ 10 \ UnionMetadata \ Windows.winmd .
Men jeg får en undtagelse, når jeg bruger metoden GetFileAsync i følgende kode [5]


    static async void LoadVoiceCommands()
    {
        try
        {
            StorageFile storageFile = await Package.Current.InstalledLocation.GetFileAsync("CustomVoiceCommandDefinitions.xml");
            await VoiceCommandDefinitionManager.InstallCommandDefinitionsFromStorageFileAsync(storageFile);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }


Undtagelsen siger Processen har ingen pakkeidentitet. (Undtagelse fra HRESULT: 0x80073D54)


Jeg kalder metoden LoadVoiceCommands i MainWindow constructor efter InitializeComponent


Når jeg tilføjer reference C: \ Programmer (x86) \ Windows Kits \ 10 \ UnionMetadata \ Windows.winmd i stedet for C: \ Programmer (x86) \ Windows Kits \ 10 \ UnionMetadata \ 10.0.17134.0 \ Windows.winmd og brug navneområder som:


using Windows.ApplicationModel; using Windows.Storage; using Windows.Devices.Geolocation;


Der er end en fejl CS0731 Typeforwarderen til type i samling 'Windows' forårsager en cyklus


for linjen


await locator.GetGeopositionAsync();


og


await Package.Current.InstalledLocation.GetFileAsync("CustomVoiceCommandDefinitions.xml");


Eventuelle ideer til løsning af dette?
Jeg kunne ikke finde en løsning i google

Bedste reference


Nogle WinRT API'er kræver, at din app skal køre i forbindelse med en appbeholder.


Det betyder, at du bliver nødt til at konvertere din app for at kunne bruge disse. Du kan gøre dette ved at oprette en Windows-apppakke til dit WPF-desktopprogram ved hjælp af Desktop Bridge. [6]


Pakken giver din app en identitet, og med den identitet har den adgang til specifikke WinRT API'er.