【问题标题】:Unable to build Xamarin Android Application in Release Mode无法在发布模式下构建 Xamarin Android 应用程序
【发布时间】:2019-02-20 07:25:13
【问题描述】:

我正在尝试构建 Xamarin Forms Android 应用程序,但它没有在 Release 模式下编译,而 Debug 工作正常。

错误详情:

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(5,5): 错误 MSB4018:“LinkAssemblies”任务意外失败。 Mono.Linker.Steps.XmlResolutionException:无法处理 XML 描述:---> Mono.Cecil.AssemblyResolutionException:无法解析程序集: 'Prism.Core,版本=0.0.0.0,文化=中性,PublicKeyToken=null' ---> Mono.Cecil.AssemblyResolutionException: 无法解析程序集: 'Prism.Core, Version=0.0.0.0, Culture=neutral, Mono.Cecil.BaseAssemblyResolver.Resolve 处的 PublicKeyToken=null' (Mono.Cecil.AssemblyNameReference 名称,Mono.Cecil.ReaderParameters 参数)[0x0015e] in /Users/builder/data/lanes/6102/8255f42f/source/monodroid/external/xamarin-android/external/mono/external/cecil/Mono.Cecil/BaseAssemblyResolver.cs:172 在 Mono.Linker.AssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference 名称,Mono.Cecil.ReaderParameters 参数)[0x0005c] in :0 at Mono.Linker.LinkContext.Resolve(Mono.Cecil.IMetadataScope 范围) [0x00007] in :0 --- 内部结束 异常堆栈跟踪 --- 在 Mono.Linker.LinkContext.Resolve (Mono.Cecil.IMetadataScope 范围)[0x00030] 在 :0 在 Mono.Linker.Steps.ResolveFromXmlStep.GetAssembly (Mono.Linker.LinkContext 上下文,Mono.Cecil.AssemblyNameReference assemblyName) [0x00000] 在 :0 处 Mono.Linker.Steps.ResolveFromXmlStep.ProcessAssemblies (Mono.Linker.LinkContext 上下文,System.Xml.XPath.XPathNodeIterator 迭代器)[0x00010] 在 :0 在 Mono.Linker.Steps.ResolveFromXmlStep.Process () [0x00037] 在 :0 --- 内部异常结束 堆栈跟踪 --- 在 Mono.Linker.Steps.ResolveFromXmlStep.Process () [0x000a9] 在 :0 处 Mono.Linker.Steps.BaseStep.Process(Mono.Linker.LinkContext 上下文) [0x00010] 在 :0 在 Mono.Linker.Pipeline.Process(Mono.Linker.LinkContext 上下文) [0x0001c] 在 :0 处 MonoDroid.Tuner.Linker.Run(Mono.Linker.Pipeline 管道, Mono.Linker.LinkContext 上下文)[0x00000] 在 :0 在 MonoDroid.Tuner.Linker.Process(MonoDroid.Tuner.LinkerOptions 选项, Mono.Linker.ILogger 记录器,Mono.Linker.LinkContext& 上下文) [0x00071] 在 :0 中 Xamarin.Android.Tasks.LinkAssemblies.Execute (Java.Interop.Tools.Cecil.DirectoryAssemblyResolver res)[0x002d4] 在 :0 在 Xamarin.Android.Tasks.LinkAssemblies.Execute () [0x0021f] 在 :0 在 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute () [0x00023] 在 /Users/builder/jenkins/workspace/build-package-osx-mono/2018-06/external/bockbuild/builds/msbuild-15/src/Build/BackEnd/TaskExecutionHost/TaskExecutionHost.cs:573 在 Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask (Microsoft.Build.BackEnd.ITaskExecutionHost taskExecutionHost, Microsoft.Build.BackEnd.Logging.TaskLoggingContext taskLoggingContext, Microsoft.Build.BackEnd.TaskHost 任务主机, Microsoft.Build.BackEnd.ItemBucket 存储桶, Microsoft.Build.BackEnd.TaskExecutionMode howToExecuteTask) [0x001f6] 在 /Users/builder/jenkins/workspace/build-package-osx-mono/2018-06/external/bockbuild/builds/msbuild-15/src/Build/BackEnd/Components/RequestBuilder/TaskBuilder.cs:784 (MSB4018) (VSTSBuild.Droid)

我还注意到,如果我启用“使用共享单声道运行时”,它也在 Release 模式下构建,但如果它被禁用,那么我在构建解决方案时遇到问题。

【问题讨论】:

  • 您是否已将 Prism.Core 包添加到您的 Xamarin.Android 项目中?
  • 是的,在 Xamarin.Android 项目中添加了 Prism.Core 包

标签: xamarin xamarin.forms


【解决方案1】:

好的,我发现问题出在 LinkerSettings。以前我的链接器设置是这样的:

<linker>
    <assembly
        fullname="Prism.Core" />
    <assembly
        fullname="Prism.Forms" />
    <assembly
        fullname="Prism.Unity.Forms" />
    <assembly
        fullname="Prism.Plugin.Popups" />
</linker>

我更新到:

<linker>
    <assembly
        fullname="Prism.Forms">
        <type
            fullname="Prism.Common.ApplicationProvider"
            preserve="all" />
        <type
            fullname="Prism.Services.PageDialogService"
            preserve="all" />
        <type
            fullname="Prism.Services.DeviceService"
            preserve="all" />
        <type
            fullname="Prism.Ioc*"
            preserve="all" />
        <type
            fullname="Prism.Modularity*"
            preserve="all" />
        <type
            fullname="Prism.Navigation*"
            preserve="all" />
        <type
            fullname="Prism.Behaviors.PageBehaviorFactory"
            preserve="all">
            <method
                name=".ctor" />
        </type>
        <type
            fullname="Prism.Services.DependencyService"
            preserve="all">
            <method
                name=".ctor" />
        </type>
    </assembly>
    <assembly
        fullname="Prism">
        <type
            fullname="Prism.Navigation*"
            preserve="all" />
        <type
            fullname="Prism.Logging.EmptyLogger"
            preserve="all">
            <method
                name=".ctor" />
        </type>
    </assembly>
</linker>

现在应用程序在发布模式下也可以正常构建。

【讨论】:

    猜你喜欢
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多