然后我下载了更新4的Visual Studio for Windows,打开了我的一个项目(目标为WP8),然后单击“升级到8.1”。
我看到我的解决方案将名称更改为“Windows Phone SilverLight 8.1”。
然后,我尝试创建一个面向Windows Phone 8.1的新项目,我在Visual C#树下看到以下选项(如图所示):
>通用应用程序
> Windows应用程序
> Windows Phone应用程序
由于我的目标是为Windows Phone 8.1开发手机设备,所以选择了“Windows Phone Apps”。但是我看到这个项目与其他项目有所不同(从WP8升级的项目)。它在解决方案上出现“Windows Phone 8.1”,而不是“Windows Phone SilverLight 8.1”。和代码也是非常不同的。
所以,我做了一个研究,了解“Windows Phone SilverLight 8.1”和“Windows Phone 8.1”之间的区别,阅读一些帖子如下:
> Difference between Windows Phone Silverlight 8.1 and Windows Phone 8.1 development
> What is the difference between Windows Phone 8.1 and Windows Phone 8.1 Silverlight
> In windows phone 8.1 what is the differance between Windows phone project and silverlight project?
但我找不到任何让我明白的东西。
在某些时候,我发现一个答案说“Windows Phone 8.1”是为通用应用程序…但是我不同意,如果我想创建一个通用应用程序,我会选择“通用应用程序”而不是“Windows Phone应用程序” 。
有没有人知道这两个项目的区别呢?
在阅读之前,这是简短版本:
> Windows Phone 8.1 Store App代码运行在所有Windows Phone 8.1和Windows 8机器上,因为它使用统一的WinRT API。
> Windows Phone Silverlight应用程序代码在所有Windows Phone 7上运行,但不在所有Windows 8机器上运行(ARM机器不支持所有功能)。这就是为什么Windows Store应用程序使用不同的API(WinRT)。您可能想查看此链接:http://msdn.microsoft.com/en-us/library/windows/apps/jj681690%28v=vs.105%29.aspx
Windows Phone正在使用最高版本8的Silverlight应用程序,而Windows 8(上))的应用程序也提供了WinRT API,您可能已经注意到了用于ARM cpu的Windows 8 RT版本。
所以 – 要阻止Silverlight和WinRT的无休止的并行性,Microsoft决定统一开发过程。从Windows Phone 8.1开始,Windows Phone还运行WinRT(重新命名为Windows Runtime,我认为)应用程序。
主要的优点是您现在可以轻松地将Windows Phone 8.1代码移植到Windows 8.1应用程序,反之亦然,因为它们都使用相同的API。访问文件,存储,网络..在Windows Phone和Windows Store Apps中都是一样的。
这是Universal Apps发挥作用的地方。通过创建一个新项目,您可以轻松地创建一个包含Windows Phone 8.1和Windows 8.1共享代码的通用项目,而不是稍后移植代码。
但是,缺点是您的应用程序不会在Windows Phone上运行, 8.1。