2016-01-13 32 views
13

Nienawidzę repostowania, ale pomyślałem, że wysłanie do MSDN forum było słuszne, ponieważ wygląda na to, że niewiele osób pracuje nad aplikacjami UWP z HTML/JavaScript, ale ponieważ nie miałem żadnych odpowiedzi, zwracam się do wspaniałej społeczności SO o pomoc.Twój project.json nie wyświetla 'win10' jako docelowego środowiska wykonawczego

Problem:
Mam bardzo prostą aplikację Programu Upgrade Advantage w HTML/JavaScript, który ma odniesienie do Runtime składnik systemu Windows, który ma odniesienie do klasy biblioteki.

Potrzebuję projektu do uruchomienia na komputerach i/lub komórkach, więc muszę skompilować go z dowolnym procesorem. Problem polega na tym, że gdy chcę skompilować mojej aplikacji pojawia się następujący błąd:

Your project.json doesn't list 'win10' as a targeted runtime. You should add '"win10": { }' inside your "runtimes" section in your project.json, and then re-run NuGet restore.

i gdybym zrobić dodać zwykły wpis pod win10 czasy pracy, mam wiele innych błędów. To właśnie mój project.json wygląda następująco:

{ 
"dependencies": { 
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0" 
}, 
"frameworks": { 
    "uap10.0": { } 
}, 
"runtimes": { 
    "win10-arm": { }, 
    "win10-arm-aot": { }, 
    "win10-x86": { }, 
    "win10-x86-aot": { }, 
    "win10-x64": { }, 
    "win10-x64-aot": { } 
} 
} 

Ponadto, jest tam minimalny repro here jeśli ktoś jest zainteresowany sprawdzenie go.

+0

To - https://issues.apache.org/jira/browse/CB-10234. "AnyCPU" wymaga wtyczki globalizacyjnej, która jest implementacją .NET (a nie urządzeniem niezależnym od urządzenia). Musisz więc budować dla każdej architektury procesora. Czy to działa? – James

+0

Nie używam Cordova, używam HTML/JavaScript dla "natywnych" aplikacji UWP. Naprawdę mam nadzieję, że nie muszę budować dla każdej architektury, to jest punkt "Universal" – sebagomez

+0

, dlaczego głosowanie w dół? czy chcesz wyjaśnić? – sebagomez

Odpowiedz

17

AnyCPU nie jest już ważny konfiguracji zarządzanego (C#/VB) UWP aplikacji. Dzieje się tak dlatego, że cały kod zarządzany (exe lub dll) dla aplikacji UWP jest kompilowany przy użyciu Natywnego toolchaina .NET do budowania plików binarnych specyficznych dla architektury. Jeśli więc używasz zarządzanego komponentu WinRT w aplikacji HTML/JS UWP, musisz również ustawić określoną architekturę w projekcie aplikacji na podstawie urządzenia, które chcesz wdrożyć, np. X86 dla komputera stacjonarnego, urządzenia ARM dla telefonu.

8

Mam podobne ustawienia i dokładnie ten sam problem. Moje obecne obejście polega na ustawieniu kompilatora na x86 podczas testowania na komputerze i zmianie na ARM podczas testowania na urządzeniach mobilnych. Daleko od optymalnego, ale jeśli odkryjesz coś lepszego, bardzo bym chciał to usłyszeć.

Zgodnie z this postem SO, AnyCPU nie jest obsługiwane dla aplikacji UWP/C#.

In addition to making sure you test with .NET Native compilation, you may also notice that the AnyCPU build configuration has disappeared. With .NET Native brought into the mix, AnyCPU is no longer a valid build configuration because native compilation is architecture dependent. An additional consequence of this is that when you package your application, you should select all three architecture configurations (x86, x64 and ARM) to make sure your application is applicable to as many devices as possible.

Źródło: .NET Native – What it means for Universal Windows Platform (UWP) developers

+0

dziękuję, właśnie to robiłem ... szukam jakiegoś programisty VS, który może wymyślić coś – sebagomez