none
winrt 组件编译方式 RRS feed

  • 问题

  • 我有一个C#的metro应用,要调用一个C++/CX的winrt组件,但是该组件在VS2012 RC中的编译方式必须选择是X86、x64或者ARM中的一种,c#的metro应用也必须按照这个winrt组件的编译平台进行编译,这样的话就不能做到一个应用安装包在多个平台之间共享了,有什么方法吗,还是必须得为不同平台编译不同的安装包。

    2012年7月18日 14:57

答案

  • 当然不是,WinRT只是需要你编译时要指定其平台,并没有限制你在开发时候的代码和使用。目前Windows RT尚未发布,具体细节还未知,不做讨论。我的意思是,如果你开发的应用是 X86/x64 以及 ARM 三者都要有的,那么ARM这个版本肯定是要独立编译的,至于前两者,如果是托管的话,则可以不用编译两份;但如果其中也有非托管的代码的话,也需要相应的两份。

    还有是如果你为不同平台提供不同功能,那可能会被认为是两个独立应用。这个并不属于开发层面,属于应用审核方面的。单从设计上,你的想法是可以的。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 PennerYu 2012年7月19日 10:27
    2012年7月19日 9:04
    版主

全部回复

  • 要为各种平台编译,提交到商店之后,商店会根据用户的机器下载不同的包,对用户来说没有什么区别。
    2012年7月19日 1:39
  • WinRT组件需要指明其编译的平台,因为WinRT不是托管库,需要针对不同的平台来执行不同的代码。当然不同的平台,你也需要提供其不同版本的应用,特别是ARM的。只是多一次编译,并不会有很多的改变。对于用户来说更是透明的,商店会为其选择对应版本。算一个应用。

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年7月19日 3:25
    版主
  • 如果是这样的话,微软提供winrt组件只是为了编译arm版的windows应用了?我应该可以为不同平台编译不同类型的库,在X86下仍然采用P/Invoke方式调用传统的win32API,用winrt组件编译arm版,两个平台的应用提供不同的功能。

    2012年7月19日 8:34
  • 当然不是,WinRT只是需要你编译时要指定其平台,并没有限制你在开发时候的代码和使用。目前Windows RT尚未发布,具体细节还未知,不做讨论。我的意思是,如果你开发的应用是 X86/x64 以及 ARM 三者都要有的,那么ARM这个版本肯定是要独立编译的,至于前两者,如果是托管的话,则可以不用编译两份;但如果其中也有非托管的代码的话,也需要相应的两份。

    还有是如果你为不同平台提供不同功能,那可能会被认为是两个独立应用。这个并不属于开发层面,属于应用审核方面的。单从设计上,你的想法是可以的。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 PennerYu 2012年7月19日 10:27
    2012年7月19日 9:04
    版主