在 VS2019 中运行的 Blazor 可以调试但不能发布

Posted

技术标签:

【中文标题】在 VS2019 中运行的 Blazor 可以调试但不能发布【英文标题】:Blazor running in VS2019 works in debug but not release 【发布时间】:2021-04-12 18:15:26 【问题描述】:

我正在使用 VS 2019 开发一个 blazor 应用程序。该应用程序在调试模式下运行良好 - 它编译构建并运行没有问题。但我切换到发布或尝试使用“发布...”选项发布应用程序,我收到以下错误。有什么想法吗?

    Severity    Code    Description Project File    Line    Suppression State
    Error       Unhandled exception. Mono.Linker.MarkException: Error processing method:
 'System.String Microsoft.Net.Http.Headers.DateTimeFormatter::ToRfc1123String(System.DateTimeOffset,System.Boolean)' in assembly: 'Microsoft.Net.Http.Headers.dll'  SRBlazer    C:\Users\MyselfLenovo\.nuget\packages\microsoft.aspnetcore.components.webassembly.build\3.2.0\targets\Blazor.MonoRuntime.targets    326 


Severity    Code    Description Project File    Line    Suppression State
Error       ILLink failed with exit code -532462766.    SRBlazer



Build started...
1>------ Build started: Project: SRBlazer, Configuration: Release Any CPU ------
1>Fatal error in Mono IL Linker
1>C:\Users\MyselfLenovo\.nuget\packages\microsoft.aspnetcore.components.webassembly.build\3.2.0\targets\Blazor.MonoRuntime.targets(326,5): error : Unhandled exception. Mono.Linker.MarkException: Error processing method: 'System.String Microsoft.Net.Http.Headers.DateTimeFormatter::ToRfc1123String(System.DateTimeOffset,System.Boolean)' in assembly: 'Microsoft.Net.Http.Headers.dll'
1> ---> Mono.Cecil.ResolutionException: Failed to resolve Microsoft.Extensions.Primitives.InplaceStringBuilder
1>   at Mono.Linker.Steps.MarkStep.HandleUnresolvedType(TypeReference reference)
1>   at Mono.Linker.Steps.MarkStep.MarkType(TypeReference reference)
1>   at Mono.Linker.Steps.MarkStep.MarkMethodBody(MethodBody body)
1>   at Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition method)
1>   at Mono.Linker.Steps.MarkStep.ProcessQueue()
1>   --- End of inner exception stack trace ---
1>   at Mono.Linker.Steps.MarkStep.ProcessQueue()
1>   at Mono.Linker.Steps.MarkStep.ProcessPrimaryQueue()
1>   at Mono.Linker.Steps.MarkStep.Process()
1>   at Mono.Linker.Steps.MarkStep.Process(LinkContext context)
1>   at Mono.Linker.Pipeline.ProcessStep(LinkContext context, IStep step)
1>   at Mono.Linker.Pipeline.Process(LinkContext context)
1>   at Mono.Linker.Driver.Run(ILogger customLogger)
1>   at Mono.Linker.Driver.Execute(String[] args, ILogger customLogger)
1>   at Mono.Linker.Driver.Main(String[] args)
1>C:\Users\MyselfLenovo\.nuget\packages\microsoft.aspnetcore.components.webassembly.build\3.2.0\targets\Blazor.MonoRuntime.targets(326,5): error : ILLink failed with exit code -532462766.
1>Done building project "SRBlazer.csproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 2 up-to-date, 0 skipped ==========

【问题讨论】:

github.com/mono/linker/issues/1457 @LexLi 谢谢,但在 github 中有大量关于此的死胡同,问题只是从一个 repo 反弹到另一个 repo。你提到的就是其中之一。对我来说更新到 5.0 不是解决方案。 你要明白,.NET Core 3.1 上的 Blazor 在很多领域还不够成熟,而是在 2020 年初发布,微软只有机会解决 .NET Core 中的主要问题(BCL 和工具)。 NET 5 时间范围。因此,拒绝升级只会限制您从 Blazor 中获得的收益。 再次感谢 Lex。说得通。我会更新到5.0。当我学习 angular.js 时,我也发生了同样的事情。 【参考方案1】:

我的项目文件中有这一行 (*.csproj)

<BlazorWebAssemblyEnableLinking>false</BlazorWebAssemblyEnableLinking>

在标签 PropertyGroup 下,一切都对我有用。试试看。

【讨论】:

以上是关于在 VS2019 中运行的 Blazor 可以调试但不能发布的主要内容,如果未能解决你的问题,请参考以下文章

在哪里可以找到有关如何将 Blazor 应用部署到在 Windows Server 2019 上运行的 IIS10 的具体详细信息

在 Blazor PWA VS-2019 解决方案中显示验证错误的问题

VS2019,调试的时候控制台无法显示输出,求教各位大佬这是怎么回事?

热重载和运行时编译 Blazor Webassembly 托管

Blazor 客户端调试

vs2010 运行并调试程序和运行不调试的区别