0

我有一个用 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">
4

1 回答 1

0

如果您需要来自 SDK 或产品程序集的一些定义,那么使用 XML 文件可能是您最好的解决方案(而不是添加将确保链接器不会消除您需要的代码的代码)。

您可以参考自定义链接器配置

于 2020-10-13T09:39:03.350 回答