我有一个现有的Xamarin.Android应用程序,几年前我构建了它以支持最高达API 19。我现在想更新代码库以支持API 24,但遇到了一系列问题。
我已经更新了代码库中的所有包和组件,以便它们都是最新和最好的。现在,当我进行编译时,我会收到几百个错误,抱怨Resources.designer.cs文件中的属性没有定义。下面是这些编译错误中的一个示例。
[PATH_TO_PROJECT]/Resources/Resource.designer.cs(98,98): Error CS0117: `[PROJECT_NAMESPACE].Resource.Attribute' does not contain a definition for `barSize' (CS0117) ([PROJECT])
Resource.designer.cs文件中的这一行突出显示为错误。
global::GooglePlayServices.Resource.Attribute.barSize = global::[PROJECT_NAMESPACE].Resource.Attribute.barSize;
这些问题中的绝大多数似乎来自我的风格和Google Play服务之间的一些链接。我已经更新了我所有的GPS软件包到最新的29.0.0.2,我仍然有这些错误。
我还确保删除了我的应用程序代码库中所有现有的“bin”和“obj”文件夹,以及~/.local/share folder
中的所有内容。
有没有人知道如何帮助我解决这些问题?我担心牛轧糖不支持android:Theme.Holo.Light.DarkActionBar
主题,将不得不做一个完整的主题重新设计:(
谢谢!
- 编辑--
下面是我的packages.config文件的内容。
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="AWS-Mobile-SDK-Xamarin-Beta" version="4.1.0" targetFramework="MonoAndroid44" />
<package id="Humanizer" version="1.37.7" targetFramework="monoandroid70" />
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="monoandroid70" />
<package id="sqlite-net" version="1.0.8" targetFramework="MonoAndroid44" />
<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.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.MediaRouter" version="24.2.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v7.Palette" version="24.2.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Vector.Drawable" version="24.2.1" targetFramework="monoandroid70" />
<package id="Xamarin.GooglePlayServices.Ads" version="29.0.0.2" targetFramework="monoandroid70" />
<package id="Xamarin.GooglePlayServices.Base" version="29.0.0.2" targetFramework="monoandroid70" />
<package id="Xamarin.GooglePlayServices.Basement" version="29.0.0.2" targetFramework="monoandroid70" />
<package id="Xamarin.GooglePlayServices.Gcm" version="29.0.0.2" targetFramework="monoandroid70" />
<package id="Xamarin.GooglePlayServices.Location" version="29.0.0.2" targetFramework="monoandroid70" />
<package id="Xamarin.GooglePlayServices.Maps" version="29.0.0.2" targetFramework="monoandroid70" />
<package id="Xamarin.GooglePlayServices.Measurement" version="29.0.0.2" targetFramework="monoandroid70" />
<package id="Xamarin.Insights" version="1.10.4.112" targetFramework="monoandroid70" />
</packages>
3条答案
按热度按时间kdfy810k1#
在
Android.Support.v7.AppCompat
版本22.2.1和版本23之间,删除了此字段:https://developer.android.com/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.attr.html
因此,如果您在应用程序中引用它,则需要不使用它,或者找到等效项。从
Added Fields
的差异来看,似乎符合逻辑的可能是barLength
。如果你没有在你的应用程序中使用它,你有另一个引用,你将不得不更新该引用,以确保它支持最新的Android.Support.v7.AppCompat
版本。lfapxunr2#
我终于找到了导致错误的原因。有一些缓存包文件被存储在一个“共享”库中,我在我的应用程序代码库中,我不知道那里。还有一些缓存的包文件在目录“~/.local/share/Xamarin”中,必须被删除。我还必须将我所有的Xamarin.Android包更新到最新版本,以及所有的Android SDK和工具。一旦我做到了这一切,它就起作用了。
bmvo0sr53#
我找到的唯一解决方案是注解所有行,就像你说的,有数百行要注解,所以我做了一个java脚本来注解它们:
你只需要用
& 'C:\Program Files\Java\jdk1.8.0_101\bin\javac.exe' -d ..\YOUR_SCRIPT_NAME.java
在同一个文件夹中创建一个
ErrorLog.txt
文件,当你得到错误时,将所有错误行(选择一个,Ctrl + A和Ctrl + V)从Visual Studio“错误列表”复制到ErrorLog.txt
文件,并将Resource.designer.cs
文件复制到文件夹中,然后执行脚本:java.exe -cp。com.packagename.YOUR_SCRIPT_NAME
它将在同一个文件夹中生成一个新的
Resource.designer.cs.temp
文件,将其内容复制到您的项目Resource.designer.cs
文件中,并继续编译过程。该脚本可以改进自动获取文件,但我不需要它。