【问题标题】:AppCenter build failing for Xamarin.Forms android project error: Could not locate the assembly "Mono.Android"Xamarin.Forms android 项目错误的 AppCenter 构建失败:找不到程序集“Mono.Android”
【发布时间】:2019-12-13 10:17:02
【问题描述】:

我可以在本地以调试和发布模式构建我的应用程序,但在 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:文件名:'[App name].Android.dll'
  • 错误 MSB4018:在 Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve
  • 错误 MSB4018:在 Xamarin.Android.Tasks.LinkAssemblies.Execute
  • 警告 MSB3245:无法解析此引用。找不到 程序集“Mono.Android”。

错误 CS0246 找不到类型或命名空间名称:

  • “UsesFeatureAttribute”、“UsesFeature”、“必需”、“Android”

【问题讨论】:

  • 这里是关于构建xamarin app的文章,大家可以看看:ecanarys.com/Blogs/ArticleID/338/App-Center-With-Xamarin-Forms
  • 我悲伤地做了这一切,但无济于事。我在 AppCenter 上使用 Xamarin.Android 构建了其他应用程序,过去它们构建得很好,但由于某种原因,无论我在 appcenter 的构建设置中添加了什么,我的新项目几乎都失败了。

标签: c# xamarin xamarin.forms xamarin.android visual-studio-app-center


【解决方案1】:

我在共享项目的 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>

【讨论】:

  • 我遇到了同样的错误。如果我删除了我的解决方案不会在本地构建。你也是这种情况吗?谢谢
  • 从共享项目中删除此代码后,我能够在本地和远程(在 AppCenter 中)运行。我可能会研究为什么您的共享项目需要在其程序集中引用 Mono.Android。也许您下载的第三方软件包需要它?
  • 是的,我需要参考 MonoAndroid。
猜你喜欢
  • 2021-09-06
  • 2022-08-02
  • 1970-01-01
  • 1970-01-01
  • 2022-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多