我可以在本地进行调试和发布模式构建我的应用程序,但构建在AppCenter上失败。当我将proe推到其他本地文件夹并运行它时,一切都起作用,因此仅当我将其部署到AppCenter时才有问题。我已经关闭了Xamarin.Forms Android项目的AppCenter Build设置中所有可能的设置。在AppCenter中的构建设置中,我选择了SDK版本:Xamarin.android 9.3(我对此对此有些困惑(,并设置了像我本地项目一样发布的模式。
我最终遇到了一堆错误,但在我身上脱颖而出的三个错误是:
警告MSB3245:无法解决此参考。无法找到组件" mono.android"。错误MSB4018:" LinkAssemblies"任务意外失败。错误msb4018:system.io.io.filenotfoundException:无法加载汇编'[app name] .android错误msb4018:文件名:'[app name] .android.dll'
我尝试将目标Android版本更改为最新的(PIE 9.0(,而不是Oreo 8.1。我尝试过链接:仅SDK组件,SDK和用户程序集,而无(这是Linker属性的所有可能选项(。我尝试过支持Armeabi-47,x86最初尝试添加ARM64和X86_64。
<PackageReference Include="CarouselView.FormsPlugin" Version="5.2.0" />
<PackageReference Include="Microsoft.AppCenter.Analytics" Version="2.1.1" />
<PackageReference Include="Microsoft.AppCenter.Crashes" Version="2.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.2.6" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
<PackageReference Include="Plugin.Permissions" Version="3.0.0.12" />
<PackageReference Include="PropertyChanged.Fody" Version="3.0.1" />
<PackageReference Include="Rg.Plugins.Popup" Version="1.1.5.188" />
<PackageReference Include="Xam.Plugin.Media" Version="4.0.1.5" />
<PackageReference Include="Xamarin.Forms" Version="4.1.0.618606" />
<PackageReference Include="Xamarin.Essentials" Version="1.2.0" />
<PackageReference Include="ZXing.Net.Mobile" Version="2.4.1" />
<PackageReference Include="ZXing.Net.Mobile.Forms" Version="2.4.1" />
预期:在AppCenter中构建就像在我清洁的本地机器上一样。
实际:我在AppCenter日志中收到错误代码:
错误MSB4018:" LinkAssemblies"任务意外失败。
错误msb4018:system.io.filenotfoundexception:无法加载
汇编[app name] .android- 错误msb4018:文件名:'[app name] .android.dll'
- 错误msb4018:atjava.interop.tools.cecil.directoryAssemblyResolver.resolve
- 错误msb4018:在xamarin.android.tasks.linkassemblies.execute
- 警告MSB3245:无法解决此参考。无法找到组件" mono.android"。
错误CS0246无法找到类型或名称名称:
- 'usefeatureattribute','usefeature','必需','android'
我在我的共享项目的assemblyInfo.cs文件中引用了android特定的汇编代码。我删除了该代码,并从我的共享项目的CSPROJ文件中删除了该项目组(由于该代码而生成(。之后,一切都很好。
<ItemGroup>
<Reference Include="Mono.Android">
<HintPath>................Program Files (x86)Microsoft Visual Studio2019ProfessionalCommon7IDEReferenceAssembliesMicrosoftFrameworkMonoAndroidv9.0Mono.Android.dll</HintPath>
</Reference>
</ItemGroup>