将解决方案发布到文件夹时出错 - 自托管 .NET

Posted

技术标签:

【中文标题】将解决方案发布到文件夹时出错 - 自托管 .NET【英文标题】:Error in publishing solution to a folder - Self hosted .NET 【发布时间】:2021-11-17 12:24:04 【问题描述】:

我有一个包含多个项目的应用程序/解决方案(.NET 6 - 自托管 Blazor WASM) 它可以在调试中构建和运行,没有任何问题。

现在,我尝试将其发布以在我们的一些本地服务器中进行测试,并尝试将其发布到文件夹中,并作为 .exe 运行。

问题是,当我尝试发布它时,在成功构建后的某个地方,我收到以下错误:

Optimizing assemblies for size, which may change the behavior of the app. Be sure to test after publishing. See: https://aka.ms/dotnet-illink
Optimizing assemblies for size, which may change the behavior of the app. Be sure to test after publishing. See: https://aka.ms/dotnet-illink
C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk.BlazorWebAssembly\targets\Microsoft.NET.Sdk.BlazorWebAssembly.6_0.targets(412,5): Error : System.ArgumentException: An item with the same key has already been added.
   at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
   at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   at Microsoft.NET.Sdk.BlazorWebAssembly.ComputeBlazorPublishAssets.GroupExistingStaticWebAssets(Dictionary`2 assemblyAssets, Dictionary`2 nativeAssets, Dictionary`2 satelliteAssemblyAssets, Dictionary`2 symbolAssets, Dictionary`2 compressedRepresentations)
   at Microsoft.NET.Sdk.BlazorWebAssembly.ComputeBlazorPublishAssets.Execute()

任何想法可能导致这种情况? 我正在使用 VS 2022(企业版)。

【问题讨论】:

【参考方案1】:

这个错误看起来很像一个未解决的问题 #37610 - Blazor AOT 编译在 ComputeBlazorPublishAssets.GroupExistingStaticWebAssets 失败

这里有the steps 进一步诊断问题:

您可以使用 dotnet publish /bl 捕获二进制日志,并使用 MSBuild 结构化日志查看器查看 ComputeBlazorPublishAssets 任务。在那里,如果您展开参数,它将显示所有 ExistingAssets,您可以更好地了解正在发生的事情。 (您会看到重复的资产)

您可以从这里下载 MSBuild 结构化日志查看器:https://msbuildlog.com/

【讨论】:

我发现 .gzip 文件是重复的(4 个)。问题是:他们引用了不同的 .dll,我遇到了与 #37610 问题中的人描述的完全相同的问题。问题是:我怎么能解决这个问题,因为目前似乎没有修复...... @AlexIvan 看起来像 11 月 8 日 dotnet/sdk 的 was merged 到 main 的潜在修复。但他们似乎还没有发布包含这些更改的版本。看起来这个问题很难重现。您能否在问题中添加一些重现步骤?

以上是关于将解决方案发布到文件夹时出错 - 自托管 .NET的主要内容,如果未能解决你的问题,请参考以下文章

“创建管道时出错。”在 Azure 管道自托管代理中运行 powershell 脚本时

如何让自托管 HTTPS asp.net 核心站点自动使用绑定到端口的证书

使用自托管 Azure Service Fabric 调用 Web API 时出错

在 docker 容器内使用带有 ssl 的自托管(Jetty)元数据库时出错

Azure WebApp Asp.NET Core 2 错误:启动应用程序时出错

具有相对路径的 Asp.net 自托管 WCF 服务 WSDL