当我的用于生成 apk 的管道脚本运行时遇到此错误(它在 Visual Studio 2022 中构建并运行良好):
##[错误]C:\Program Files (x86)\Microsoft Visual Studio�9\Enterprise\MSBuild\Xamarin\Android\Xamarin.Android.Legacy.targets(660,5): 错误XALNK7000: Mono.Linker.MarkException: 错误处理方法: '系统.线程.任务.任务
1> Sharpnado.HorizontalListView.Paging.Paginator1<Sharpnado.HorizontalListView.Services.PageResult
1 Sharpnado.Tasks.TaskMonitor1::LoadPage(System.Int32,System.Boolean)' in assembly: 'Sharpnado.HorizontalListView.dll' ---> Mono.Cecil.ResolutionException: Failed to resolve System.Threading.Tasks.Task
1>::get_Task()1<Sharpnado.HorizontalListView.Services.PageResult
我的 yml 脚本:
# https://docs.microsoft.com/azure/devops/pipelines/languages/xamarin
pool:
vmImage: 'windows-2019' # For Mac, use 'macOS-10.13'
variables:
- group: 'AndroidAppVariables'
- name: 'buildConfiguration'
value: 'Release'
- name: 'outputDirectory'
value: '$(build.binariesDirectory)/$(buildConfiguration)'
- name: 'NugetVersion'
value: 5.8.0
steps:
- task: NuGetToolInstaller@0
displayName: 'Use NuGet $(NugetVersion)'
inputs:
versionSpec: $(NugetVersion)
- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: 'src\AndroidApp.sln'
feedsToUse: 'select'
vstsFeed: '/a3sb3q3s-ab12-2020-0202-0202020202'
- task: XamarinAndroid@1
inputs:
projectFile: 'src\AndroidApp.Android\AndroidApp.csproj'
outputDirectory: '$(outputDirectory)'
configuration: '$(buildConfiguration)'
jdkVersionOption: 1.11
createAppPackage: true
msbuildVersionOption: latest
到目前为止我尝试过的:
<GenerateSerializationAssembles>Auto</GenerateSerializationAssemblies>
在阅读了 StackOverflow 中发生在 Visual Studio 中的一些类似错误(在发布配置模式下构建时)之后,我也在 VS2022 中遇到了该问题。就像其他人在这个问题中所做的那样,即使该应用程序不再使用,我也必须安装 Sharpnado.HorizontalListView 1.8.2,因为我们希望将更改保持在最低限度(因为我们也在迁移到 .Net MAUI,而这样做只需确保当前的 Xamarin 项目仍然得到维护): Mono.Linker.MarkException:错误处理方法:'System.Void AndroidX.RecyclerView.Widget.RecyclerView/LayoutManager
然后它也适用于管道,无需更改脚本中的任何内容。