先前,我在让 UWP 程序在支持 Win10M 的前提下支持 Arm64 平台的一种方法一文中提及了通过修改 Package.appxmanifest 以在项目最低版本为 16299 的情况下在版本为 15254 的 Win10M 上部署 UWP 程序。
这对 Win10M 来说很好,但是对于桌面系统,就没有那么美好了......
我们发现,即使在 Package.appxmanifest 中手动将 Windows.Universal 的 MinVersion 指定为 15063,在生成项目的时候生成工具仍会将其自动改为项目文件中指定的最低版本:

这会导致一个后果,本应支持低版本的应用无法在其应当支持的版本部署了:

这是生成工具在生成时自动为我们修改的,于是我们检查项目文件,找到了项目文件中引用的,与 Appx 生成相关的 Microsoft.AppxPackage.Targets MSBuild Target 文件,之后发现了一个 MSBuild 属性:AppxOSMinVersionReplaceManifestVersion。
看上去这就是我们需要修改的属性,于是在项目文件中,我们将这个值设为 False。
<PropertyGroup>
<!-- ... -->
<AppxOSMinVersionReplaceManifestVersion>false</AppxOSMinVersionReplaceManifestVersion>
<!-- ... -->
</PropertyGroup>
之后生成我们的应用——


耶,成功生成并部署!
当然,和我上面提到的那一篇文章一样,你的应用不要用那些在低版本中不支持的 API,C# 和 XAML 都有避免使用不支持 API 的方法(比如 ApiInformation 类的 IsTypePresent()、IsApiContractPresent() 方法、条件 XAML 等)