我在我的机器上安装了mango SDK,我想创建一个在Windows Phone OS 7.0和Windows Phone OS 7.5设备上运行的应用程序。另外,我需要在同一个应用程序中实现许多芒果功能。可能吗 ?如果是,请告诉我如何进行版本检查,因为基于我们需要实现芒果功能的版本。
答案 0 :(得分:6)
您必须维护两个不同的版本。您无法同时编译一个支持两个版本的XAP。
Mango API仅在使用7.1 SDK进行编译时可用。因此,您无法在代码中进行内联检查。
但这是毫无意义的,因为几乎没有用户没有升级到芒果,所有新手机都附带芒果。
答案 1 :(得分:2)
现在几天所有的Windows手机都附带了Wp7.5芒果版本,旧版设备也正在进行芒果更新,因此仅针对少数WP7.0运行手机看起来毫无意义。
但如果您不需要任何与SDK相关的api访问权限,那么您可以进行此分叉。
但You can find the solution to the finding the OS version is in [my answer of same kind of question here.] 1
答案 2 :(得分:2)
您可以使用Type类和反射来完成此操作,但这个过程并不容易。创建一个Windows Phone 7.0应用程序,然后创建一个实现芒果特定功能的MangoExtensions类:
bool IsMangoDevice = (Environment.OSVersion.Version >= new Version(7, 1));
if (IsMangoDevice)
{
Type t = Type.GetType("Microsoft.Phone.Shell.StandardTileData, Microsoft.Phone");
//get the constructor for the StandardTileData and create a new instance of it
var newTileData = t.GetConstructor(new Type[] { }).Invoke(null);
//Get the setter method for the title property
var setMethod = newTileData.GetType().GetProperty("Title").GetSetMethod();
//Set the tile title
setMethod.Invoke(newTileData, new object[] { "This is my new tile" });
//Get the create method for the shell tiles
Type shellTileType = Type.GetType("Microsoft.Phone.Shell.ShellTile, Microsoft.Phone");
var createMethod = shellTileType.GetMethod("Create");
//Create the tile, with the uri and tile data
Uri uri = new new Uri("/MainPage.xaml?Test=This_Came_From_A_Secondary_Tile", UriKind.Relative)
createMethod.Invoke(null, new object[] { uri, newTileData});
}