【发布时间】:2018-07-06 16:38:13
【问题描述】:
我正在开发我的 UWP 应用。我设置:
- 目标版本:16299
- 最低版本:14393
我使用了一些 AcrylicBrushes。因为需要16299版本,所以我有两个带画笔的文件:
- Styles/Brushes.xaml (低于 16299 - 仅 SolidColorBrushes)
- Styles/Fall/Brushes.xaml (16299 及以上 - SolidColorBrushes 和 AcrylicBrushes)
我在 App.xaml.cs 中使用下面的代码
private void SetupStyles() {
var prefix = PlatformApiService.IsAcrylicBrushAvailable ? "Fall/" : string.Empty;
var brushUri = new Uri($"ms-appx:///Styles/{prefix}Brushes.xaml", UriKind.Absolute);
Current.Resources.MergedDictionaries.Add(new ResourceDictionary { Source = brushUri });
}
当最低版本为 10586 时一切正常,但使用 14393 我的应用无法构建,因为:
类型“Windows.UI.Xaml.Media.AcrylicBrush”在合同“Windows.Foundation.UniversalApiContract”版本“5.0.0.0”下定义,但目标最低版本的合同版本是“3.0.0.0”!
类型“Windows.UI.Xaml.Media.IAcrylicBrush”的成员“BackgroundSource”在合同“Windows.Foundation.UniversalApiContract”版本“5.0.0.0”下定义,但目标最低版本的合同版本为“3.0” .0.0'!
类型“Windows.UI.Xaml.Media.IXamlCompositionBrushBase”的成员“FallbackColor”在合同“Windows.Foundation.UniversalApiContract”版本“4.0.0.0”下定义,但目标最低版本的合同版本为“3.0” .0.0'!
我不能使用Conditional XAML,因为它需要15063版本。我该怎么办?
【问题讨论】:
-
当您将最低版本设置为 10586 时,我非常怀疑“一切正常”。如果某些资源仅适用于 Fall Creators Update (UniversalApiContract 5.0.0.0),如何从 Aniversary Update 更改最低版本(3.0.0.0) 到 11 月更新 (2.0.0.0) 解决问题了吗?
-
@AndréB 因为正如我所说,我使用两个不同的 Brushes.xaml 文件。在 app.xaml.cs 中,如果应用程序在旧版本上启动,它会添加带有 SolidColorBrushes 的 Brushes.xaml,否则添加带有 AcrylicBrushes (Fall/Brushes.xaml) 的那个。当最低版本设置为 11 月更新时,VS2017 成功完成构建,仅警告说秋季创作者更新支持 AcrylicBrush。但是当最小版本设置为周年纪念日时,VS2017 会中断构建并出现错误。
-
作为Conditional XAML 文档,要创建最低版本低于内部版本15063 的版本自适应应用程序,您必须使用version adaptive code 而不是XAML。达不到你的要求吗?也很好奇最低版本为 10586 时一切正常,但不是 14393 时,您能提供一个简单的重现项目来帮助我们查看吗?
标签: c# .net xaml uwp backwards-compatibility