迁移后 Xamarin 缺少资源

Xamarin missing resources after migration

将 MacOs X 升级到 Sierra 后,我在构建解决方案时遇到了一些问题。

这个问题与资源文件有关,我在资源文件中遇到了 16 个错误,例如:

 Error: Resource.Drawable does not contain a definition for "abc_ratingbar_full_material" 

同样适用于:

abc_search_view_text_min_width
abc_btn_rating_star_off_mtrl_alpha
abc_btn_rating_star_on_mtrl_alpha
abc_dialog_material_background_dark
abc_dialog_material_background_light
abc_ic_ab_back_mtrl_am_alpha
abc_ic_clear_mtrl_alpha
abc_ic_go_search_api_mtrl_alpha
abc_ic_menu_moreoverflow_mtrl_alpha
abc_ic_search_api_mtrl_alpha
abc_ic_voice_search_api_mtrl_alpha

Package.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="AndroidEasingFunctions" version="1.0.2.0" targetFramework="MonoAndroid60" />
  <package id="AutoFitTextView" version="0.2.1.0" targetFramework="MonoAndroid60" />
  <package id="Bolts" version="1.4.0.1" targetFramework="monoandroid70" />
  <package id="HtmlAgilityPack" version="1.4.9.5" targetFramework="monoandroid70" />
  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="monoandroid70" />
  <package id="NineOldAndroids" version="2.4.0" targetFramework="MonoAndroid60" />
  <package id="RecyclerViewAnimators" version="2.1.0.0" targetFramework="MonoAndroid60" />
  <package id="Refractored.PagerSlidingTabStrip" version="1.1.6" targetFramework="monoandroid70" />
  <package id="SharpZipLib.Portable" version="0.86.0.0003" targetFramework="MonoAndroid50" />
  <package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Compat" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Core.UI" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Core.Utils" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.CustomTabs" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Design" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Fragment" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Media.Compat" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.v4" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.v7.AppCompat" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.v7.CardView" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.v7.RecyclerView" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Vector.Drawable" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Facebook.Android" version="4.16.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Firebase.Common" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Ads" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Ads.Lite" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Analytics" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Analytics.Impl" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.AppIndexing" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Base" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Basement" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Clearcut" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Gass" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Tasks" version="32.961.0" targetFramework="monoandroid70" />
</packages>

怎么可能?可能是我遗漏了对某些内容的引用?

这取决于支持库的版本。任何 < 25.0.1 的内容都会下载缓存并使用它而不是本地 SDK 下载,所以请记住这一点(因为它需要 Xamarin.Build.Download 的依赖)。因此,由于您正在使用 24.2.1 支持库下载缓存,因此您需要阅读并查看支持库之间的变化差异。例如,这是您的确切问题:

https://developer.android.com/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.drawable.html

这展示了 23.1.123.2.0 之间的变化。

显示以下字段已删除:

int abc_btn_check_to_on_mtrl_000     
int abc_btn_check_to_on_mtrl_015     
int abc_btn_radio_to_on_mtrl_000     
int abc_btn_radio_to_on_mtrl_015     
int abc_ic_ab_back_mtrl_am_alpha     
int abc_ic_clear_mtrl_alpha  
int abc_ic_go_search_api_mtrl_alpha  
int abc_ic_menu_copy_mtrl_am_alpha   
int abc_ic_menu_cut_mtrl_alpha   
int abc_ic_menu_moreoverflow_mtrl_alpha  
int abc_ic_menu_paste_mtrl_am_alpha  
int abc_ic_menu_selectall_mtrl_alpha     
int abc_ic_menu_share_mtrl_alpha     
int abc_ic_voice_search_api_mtrl_alpha

正如您所注意到的,您的一些问题资源在此列表中。这意味着您的项目中可能有一个依赖于支持库 23.1.1 并且不支持您当前安装的 24.2.1 的依赖项。因此,您将必须确定有问题的包并更新它,或者要求维护者更新它以确保兼容性。