我将一个UWP App更新为更新的SDK,并将目标版本设置为16299,最低版本设置为15063。
然后,我使用Windows.Foundation.UniversalApiContract命名空间来使用新SDK的功能(如果有)。示例:
xmlns:contract5NotPresent="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractNotPresent(Windows.Foundation.UniversalApiContract,5)"
xmlns:contract5Present="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract,5)"
<contract5Present:NavigationView x:Name="NavView" ...
构建失败,没有显示错误消息。但是当我将构建日志设置为详细时,似乎找不到程序集:
Could not resolve this reference. Could not locate the assembly "Windows.Foundation.FoundationContract, Version=255.255.255.255, Culture=neutral, PublicKeyToken=null". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
文件夹和文件位于C:\ Program Files(x86)\ Windows 套件\ 10 \参考** 10.0.16299.0 ** \ Windows.Foundation.FoundationContract \ 3.0.0.0 和C:\ Program Files(x86)\ Windows 套件\ 10 \参考** 10.0.15063.0 ** \ Windows.Foundation.FoundationContract \ 3.0.0.0
更新1: 看来这与我的资源依赖和丙烯酸画笔有关。如果我将资源字典复制到空白应用程序,则会发生相同的错误。如果我从合同中删除了合同物品和所有丙烯酸刷,则构建成功。那我在这里想念什么?
更新2: 我终于找到了问题所在(也许您可以复制,只是从一个空白应用开始(目标:Fall Creators,最低版本:Creators Update),创建一个ResourceDictionary并将其复制到其中):
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App6"
xmlns:contract5NotPresent="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractNotPresent(Windows.Foundation.UniversalApiContract,5)"
xmlns:contract5Present="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract,5)"
>
<Thickness x:Key="HeaderMargin">20,41,0,0</Thickness>
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Light">
<Color x:Key="BrandColor">#D1D1D1</Color>
<contract5Present:AcrylicBrush x:Key="OptionsPaneBackground" BackgroundSource="Backdrop" TintColor="{StaticResource BrandColor}" TintOpacity="0.2" FallbackColor="#D1D1D1" />
</ResourceDictionary>
<ResourceDictionary x:Key="Dark">
<Color x:Key="BrandColor">#3F3F46</Color>
<contract5Present:AcrylicBrush x:Key="OptionsPaneBackground" BackgroundSource="Backdrop" TintColor="{StaticResource BrandColor}" TintOpacity="0.6" FallbackColor="#3F3F46" />
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>
如果我从字典中删除第一行(厚度),则构建成功。我的系统在 2018年4月更新上运行,但是在另一台装有秋季创作者更新的计算机上也有同样的问题。
解决方案:我已经将ThemeResources和Styles分为两个单独的ResourceDictionaries,现在该构建在我的主项目中成功了。但是我不明白为什么会这样,为什么没有确切的错误信息出现。我花了大约8个小时(我的项目中有超过70万行代码)来查找问题,对此我有些生气:)
答案 0 :(得分:1)
您的16299和15063 SDK文件似乎存在问题,您可以尝试打开文件资源管理器并转到相应的文件位置,以查看SDK是否存在。
路径应为:C:\Program Files (x86)\Windows Kits\10\References\10.0.15063.0(10.0.16299.0)\Windows.Foundation.FoundationContract\3.0.0.0\
否则,您可以尝试再次从Windows SDK and emulator archive下载并安装SDK版本。
如果仍然不能解决问题,请尝试将 Microsoft.NETCore.UniversalWindowsPlatform 更新为最新版本,然后重新启动VS,清理并重新构建应用程序。顺便说一句,也请提供您设备的操作系统版本和操作系统内部版本,以帮助我调查此问题。
---更新---
另一个解决方法是,您可以在<ResourceDictionary.ThemeDictionaries></ResourceDictionary.ThemeDictionaries>
标签对之后声明 中ResourceDictionary的内容。这样可以防止崩溃触发。