在 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,调试的时候控制台无法显示输出,求教各位大佬这是怎么回事?