c# - Xamarin.Forms android 项目错误的 AppCenter 构建失败:找不到程序集“Mono.Android”
问题描述
我可以在本地以调试和发布模式构建我的应用程序,但在 Appcenter 上构建失败。当我将我的项目克隆到不同的本地文件夹并运行它时,一切正常,所以似乎只有当我将它部署到 Appcenter 时才会出现问题。我已在我的 Xamarin.Forms android 项目的 Appcenter 构建设置中关闭了所有可能的设置。在 Appcenter 的构建设置中,我选择了 SDK 版本:Xamarin.Android 9.3(我对它的作用有点困惑)并将模式设置为 Release,就像我的本地项目一样。
我最终遇到了一堆错误,但对我来说突出的三个主要错误是:
警告 MSB3245:无法解析此引用。找不到程序集“Mono.Android”。错误 MSB4018:“LinkAssemblies”任务意外失败。错误 MSB4018:System.IO.FileNotFoundException:无法加载程序集 '[App name].Android 错误 MSB4018:文件名:'[App name].Android.dll'
我尝试将目标 android 版本更改为最新版本(Pie 9.0),而不是 Oreo 8.1。我尝试过链接:仅 Sdk 程序集、Sdk 和用户程序集,并且没有(这是链接器属性的所有可能选项)。我最初尝试支持 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:无法加载
程序集 [应用程序名称].Android- 错误 MSB4018:文件名:“[应用程序名称].Android.dll”
- 错误 MSB4018:在 Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve
- 错误 MSB4018:在 Xamarin.Android.Tasks.LinkAssemblies.Execute
- 警告 MSB3245:无法解析此引用。找不到程序集“Mono.Android”。
错误 CS0246 找不到类型或命名空间名称:
- “UsesFeatureAttribute”、“UsesFeature”、“必需”、“Android”
解决方案
我在共享项目的 AssemblyInfo.cs 文件中引用了 Android 特定的汇编代码。我删除了该代码并从我的共享项目的 csproj 文件中删除了这个 ItemGroup(由于该代码而生成)。之后在 AppCenter 上一切正常。
<ItemGroup>
<Reference Include="Mono.Android">
<HintPath>..\..\..\..\..\..\..\..\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v9.0\Mono.Android.dll</HintPath>
</Reference>
</ItemGroup>
推荐阅读
- react-native - 你能根据用户类型定义导航器,并在根导航器中有条件地声明它们吗?
- android - 如何修复由于网络导致提交到 git 失败
- ios - iTunes Connect 帐户/角色与 Apple Developer 帐户之间的区别
- android - 如何从 PagerAdapter 对象获取当前页面字段?
- excel - 如何使用基于年份的条件格式在 Excel 中设置颜色代码?
- directory - 谷歌 colab 更改目录
- python - 遍历多个 pandas Dataframe 对象
- php - JSON 使用 File_get_contents 获取 PHP 数组
- docusignapi - 尝试使用 Microsoft Flow 创建信封时出错 - 可能是超时
- python - Python:如何确保函数在第一次被调用时被加载?