2012-09-27 99 views
8

我需要使用C#和XAML開發Metro風格的應用程序,它必須在Windows RT設備和完整的Windows 8操作系統上運行。所以我被允許只使用WinRT而沒有任何.net框架程序集。我讀過這個問題Windows RT和c#

Microsoft Surface Tablet: Writing Apps for Both Devices?

,這非常有用的帖子:http://blogs.msdn.com/b/jasonz/archive/2012/06/12/what-you-need-to-know-about-developing-for-windows-on-arm-woa.aspx,但我STIL有問題: 當我甚至創建一個空白的Metro風格的應用程序項目我有一個Metro風格的.NET asseblies。我是否自己刪除它們或者我做錯了什麼?如果需要使用Prism fw移植到WinRT或mvvvm光源,我該怎麼做?他們是否允許我僅在本地WinRT上開發WOA應用程序?這些時刻對我而言並不明確。

你能解釋一下我在Windows RT和Windows上的區別ARM 我是否需要使用WinRT(沒有.net)來開發WindowsRT操作系統?

希望你能幫助我。

回答

14

讓我以最直接的方式回答你。如果您打開一個空白的XAML/C#Windows應用商店項目。該項目將在Windows RT(ARM)和Windows 8(x86/x64)上運行。這是因爲它的目的是爲了完成這一點。僅僅因爲你有類似.Net Framework的感覺,不用擔心 - 你正在編寫一個跨平臺的應用程序。

現在,爲注意事項。由於C#,您使這個答案變得簡單。 CPP開發人員沒有相同的保證,因爲他們可以通過編碼來打破這種兼容性。在C#中不是這樣。如果您編寫的代碼編譯爲「任何CPU」,那麼我所說的是正確的。

如果您引入了需要您的構建從「任何CPU」更改爲其他內容的內容(如Bing地圖控件)。 Windows商店將允許您以相同的名稱提交您的應用的三個版本 - 每個平臺一個 - 並且用戶永遠不會知道有多個版本。

在最後一個例子中,您仍然支持每個平臺,您只需指定三個不同的版本即可完成它 - 您的代碼可能根本不會改變!在大多數情況下,你們全力支持他們。如果您引入第三方庫(如MVVMlite),如果您可以構建到任何CPU,則仍然可以。大多數圖書館都很酷。

+0

謝謝。我正在尋找這個答案 –

+1

還有一件事,由於PINVOKE仍然可用於WinRT中的託管開發人員,C#開發人員仍有可能導致ARM不兼容,但他們必須努力工作才能做到這一點。 –

3

說不能在Metro風格的應用程序中使用.net框架。更確切地說,有一個只適用於metro應用程序的.net框架版本。如果你的程序集不是用這個.net框架的版本構建的,它們將不適用於metro。 .net框架的這個版本可以在.86和arm上運行。還有一個適用於metro應用的MVVM Light版本。 Download it here.有關爲手臂開發的詳細信息,請參閱here

不管你是使用JavaScript,C++,Visual Basic或 C#,如果你已經建立了一個Metro風格的應用程序爲目標的x86/x64操作系統,那麼你 已經知道如何建立一個針對ARM 。您可以使用同樣的Metro 風格的項目模板,它提供了構建 應用程序的起點。

編輯: 正如傑裏所指出的,您可能需要編譯您針對不同的版本,如果都寫在C++庫的應用程序,但是這是有獨立的構建,而不必做更多的發展的問題。

+0

感謝您的回覆。當我寫「Windows RT設備(我的意思是WOA)」時,可能是我犯了錯誤。是的,我可以在城域應用程序開發中使用.net框架,但我怎樣才能確定我的應用程序可以在Windows RT OS上運行?我需要的不僅僅是metro風格的應用程序,它將在Windows 8上運行.86和ARM。任何版本的.net框架都可以在Windows RT操作系統上運行? –

+0

我需要的不僅僅是metro風格的應用程序,它可以在.86和ARM上運行Windows 8,但是Windows RT。 –

+0

@Bogdan Dudnik現代的應用程序是便攜式的,它可以在 –

1

如果您製作圖書館的便攜式類庫,則可以將它們用於桌面,城域和電話應用程序(以及xbox)。您可以在啓動庫時或在項目的屬性中選擇此選項。它使得在mircrosoft生態系統中編寫跨平臺應用變得更加容易。