迁移后 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
支持库下载缓存,因此您需要阅读并查看支持库之间的变化差异。例如,这是您的确切问题:
这展示了 23.1.1
和 23.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
的依赖项。因此,您将必须确定有问题的包并更新它,或者要求维护者更新它以确保兼容性。
将 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
支持库下载缓存,因此您需要阅读并查看支持库之间的变化差异。例如,这是您的确切问题:
这展示了 23.1.1
和 23.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
的依赖项。因此,您将必须确定有问题的包并更新它,或者要求维护者更新它以确保兼容性。