我有一个用 VB.net .net 3.5 编写的旧库,使用这个库作为 Xamarin.Android 项目上的 dll 或项目引用,与链接器“无”一起工作。如果我使用链接器,问题就开始了。当我将链接器设置为“仅 SDK 程序集”时,我收到以下错误消息。
错误 Java.Interop.Tools.Diagnostics.XamarinAndroidException:错误 XA2006:无法解析对“System.Void Microsoft.VisualBasic.MyGroupCollectionAttribute::.ctor(System.String,System.String,System.String,System.String)”的引用(在程序集 'VBLibraryProject,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null' 中定义),范围为 'Microsoft.VisualBasic,Version=8.0.0.0,Culture=neutral,PublicKeyToken='。当作用域与定义的程序集不同时,通常意味着该类型被转发。---> Mono.Cecil.ResolutionException: 无法在 Mono.Linker.Steps.MarkStep 解析 System.Void Microsoft.VisualBasic.MyGroupCollectionAttribute::.ctor(System.String,System.String,System.String,System.String) Mono.Linker.Steps.MarkStep 处的 .HandleUnresolvedMethod(MethodReference 参考)。
在 Mono.Linker.Steps.MarkStep.MarkCustomAttributes(ICustomAttributeProvider provider) 在 Mono.Linker.Steps.MarkStep.MarkEntireType(TypeDefinition type) 在 Mono.Linker.Steps.MarkStep.MarkEntireType(TypeDefinition type) 在 Mono.Linker.Steps.MarkStep .MarkEntireAssembly(AssemblyDefinition 程序集) 在 Mono.Linker.Steps.MarkStep.InitializeAssembly(AssemblyDefinition 程序集) 在 Mono.Linker.Steps.MarkStep.Initialize() 在 Mono.Linker.Steps.MarkStep.Process(LinkContext context) 在 MonoDroid.Tuner .MonoDroidMarkStep.Process(LinkContext context) 在 Mono.Linker.Pipeline.ProcessStep(LinkContext context, IStep 步骤)
在 Mono.Linker.Pipeline.Process(LinkContext context) 在 MonoDroid.Tuner.Linker.Process(LinkerOptions options, ILogger logger, LinkContext& context) 在 Xamarin.Android.Tasks.LinkAssemblies.Execute(DirectoryAssemblyResolver res)
我已经为下面的那些库添加了 AndroidLinkSkip
<AndroidLinkSkip>Microsoft.VisualBasic;Microsoft.VisualBasic.Core;VBLibraryProject</AndroidLinkSkip>
尽管如此,它仍然因同样的错误而失败?项目使用最新的 XF 4.8 版本和 Android.Support 库和目标版本 android 9.0 最低版本 8.0
编辑:我尝试使用以下类型的 linker.xml,LinkDescription
但没有帮助。
<linker>
<assembly fullname="Microsoft.VisualBasic">
<namespace fullname="Microsoft.VisualBasic" />
</assembly>
<assembly fullname="Microsoft.VisualBasic.Core">
<namespace fullname="Microsoft.VisualBasic" />
</assembly>
<assembly fullname="VBLibraryProject">