2012-09-27 7 views
8

Ich muss Metro-Anwendung mit C# und XAML entwickeln, die auf Windows RT-Geräte und vollständige Windows 8 OS funktioniert. Ich darf also nur WinRT ohne .net Framework Assemblies verwenden. Ich habe diese Frage leseWindows RT und C#

Microsoft Surface Tablet: Writing Apps for Both Devices?

und dies sehr nützlich Beitrag: http://blogs.msdn.com/b/jasonz/archive/2012/06/12/what-you-need-to-know-about-developing-for-windows-on-arm-woa.aspx, aber ich habe stil Frage: Wenn ich noch ein leeres Metro Style-Anwendungsprojekt I für Metro-Stil .NET asseblies habe. Muss ich sie selbst entfernen oder mache ich etwas falsch? Und was sollte ich tun, wenn ich etwas wie Prism fw portiert nach WinRT oder mvvvm light brauche? Erlauben sie mir, Anwendung für WOA nur auf nativem WinRT zu entwickeln? Diese Momente sind mir nicht klar.

Können Sie mir meinen Unterschied zwischen Windows RT und Windows auf ARM erklären Muss ich nur WinRT (ohne .net) für WindowsRT OS zu entwickeln?

Hoffe, du kannst mir helfen.

Antwort

14

Lassen Sie mich Ihnen auf die direkteste Weise antworten, die ich kann. Wenn Sie ein leeres XAML/C# Windows Store-Projekt öffnen. Dieses Projekt wird unter Windows RT (ARM) und Windows 8 (x86/x64) ausgeführt. Das liegt daran, dass es dafür gebaut wurde. Nur weil Sie sich wie das .Net Framework fühlen, machen Sie sich keine Sorgen - Sie schreiben eine plattformübergreifende Anwendung.

Nun, für die Vorbehalte. Sie haben diese Antwort aufgrund von C# leicht gemacht. CPP-Entwickler haben nicht die gleiche Garantie, da es Kodierungsmöglichkeiten gibt, die sie tun können, um diese Kompatibilität zu durchbrechen. Nicht so in C#. Wenn der Code, den Sie schreiben, in "Any CPU" kompiliert wird, dann ist das, was ich sage, korrekt.

Wenn Sie etwas einführen (wie das Bing Maps-Steuerelement), muss Ihr Build von "Any CPU" zu etwas anderem wechseln. Mit dem Windows Store können Sie drei Versionen Ihrer App unter demselben Namen eins für jede Plattform einreichen, und der Benutzer wird nie wissen, dass es mehrere gibt.

In diesem letzten Beispiel unterstützen Sie immer noch jede Plattform, Sie müssen nur bestimmte drei verschiedene Builds, um es zu erreichen - Ihr Code darf sich überhaupt nicht ändern! In den meisten Szenarien unterstützen Sie sie alle außerhalb des Tors. Wenn Sie eine Bibliothek von Drittanbietern - wie MVVMlite - einführen, sind Sie immer noch in Ordnung, wenn Sie mit jeder CPU bauen können. Die meisten Bibliotheken sind so cool.

+0

Danke. Genau diese Antwort, die ich suchte, als ich fragte –

+1

Eine Sache, da PINVOKE immer noch für verwaltete Entwickler in WinRT verfügbar ist, ist es immer noch für C# Entwickler möglich, ARM-Inkompatibilität zu verursachen, aber sie müssen hart arbeiten, um es zu tun. –

3

Es ist nicht ganz richtig zu sagen, dass Sie das .NET Framework in Apps im Metro-Stil nicht verwenden können. Genauer gesagt gibt es eine Version des .net-Frameworks, die nur für Metro-Apps verfügbar ist. Wenn Ihre Assemblys nicht mit dieser Version des .NET-Frameworks erstellt wurden, funktionieren sie nicht für Metro. Diese Version des .NET-Frameworks wird mit .86 und arm funktionieren. Es gibt auch eine Version von MVVM Light für Metro-Apps. Download it here. Details zur Entwicklung für Arm finden Sie unter here.

Unabhängig davon, ob Sie verwenden JavaScript, C++, Visual Basic, oder C#, wenn Sie ein Metro-Stil App erstellt haben, die Sie dann x86/x64 Ziele bereits wissen, wie man bauen, die ARM-Ziele . Sie verwenden die gleichen Metro-Projektvorlagen , die den Ausgangspunkt zum Erstellen einer App bieten.

Edit: Wie Jerry weist darauf hin, können Sie Ihre Anwendung gegen verschiedene Versionen von Bibliotheken, wenn sie geschrieben werden, in C++ kompilieren müssen, aber das ist eine Frage der mit getrennten baut anstatt zusätzliche Entwicklung zu tun.

+0

Danke für die Antwort. Möglicherweise habe ich einen Fehler gemacht, als ich "Windows RT-Geräte (ich meine WOA)" geschrieben habe. Ja, ich kann .net Framework in Metro-Anwendungen Entwicklung, aber wie kann ich sicher sein, dass meine Anwendung auf Windows RT OS funktioniert? Ich brauche nicht nur Metro Style App, die auf .86 und ARM mit Windows 8 funktioniert. Wird eine beliebige Version von .net Framework auf Windows RT OS verfügbar sein? –

+0

Ich brauche nicht nur Metro Style App, die auf .86 und ARM mit Windows 8, sondern Windows RT funktioniert. –

+0

@Bogdan Dudnik Moderne apps sind tragbar, Es funktioniert auf beiden –

1

Wenn Sie Ihre Bibliotheken zu tragbaren Klassenbibliotheken machen, können Sie sie für Desktop-, Metro- und Telefon-Apps (und auch für Xbox) verwenden. Sie können dies beim Starten einer Bibliothek oder in den Projekteigenschaften auswählen. Es erleichtert das Schreiben plattformübergreifender Apps innerhalb des Microsoft-Ökosystems.