Azure DevOps CI - 无法部署 bc System.Text.Json,未找到版本=8.0.0.4

问题描述 投票:0回答:1

我正在尝试重新提交来自另一位作者的问题,该问题因缺乏详细信息而被关闭。 我有一个 ASP MVC .NET6 WebApp,它已经运行良好很长时间了。昨天,我添加了一些小代码并将其推送到我的 DevOps 存储库,该存储库通过 Pipeline 链接到我的 Web 应用程序上的暂存槽(通过部署中心部分)。 几个月来一切都运行良好,但昨天开始出现故障。 我的部署日志看起来很好,直到出现此错误

C:\Program Files (x86)\dotnet\sdk\9.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(266,5): error NETSDK1060: Error reading assets file: 
Error loading lock file 'C:\home\site\repository\obj\project.assets.json' : 
Could not load file or assembly 'System.Text.Json, Version=8.0.0.4, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. 
The system cannot find the file specified. [C:\home\site\repository\[MyApp].csproj]
    Done Building Project "C:\home\site\repository\[MyApp].csproj" (default targets) -- FAILED.

我什至不在我的代码中使用 System.Text.Json,尽管它肯定是其他几个 nuget 包(Azure.Storage.Blobs、Azure.Search 等...)的依赖项

我对“Version=8.0.0.4”是什么感到困惑? 为什么是4级? 不应该是8.0.0吗? 查看project.assets.json,没有任何依赖项需要该版本。

我的临时解决方案是本地编译并自行部署。 我必须创建一个全新的插槽,并使用 VS Code 的 Azure 工具执行 Azure 应用服务:部署到插槽。 这仅适用于全新的插槽 - 如果我尝试部署到之前使用上面的 DevOps 部署失败的插槽,它就会失败。

欢迎任何有关如何实际解决 DevOps 部署中的问题的建议。

asp.net-mvc azure azure-devops azure-pipelines
1个回答
0
投票

根据您的描述,当您使用部署中心部署.net6项目时,会出现以下错误:

无法加载文件或程序集“System.Text.Json,版本=8.0.0.4,...

我最近的部署遇到了完全相同的问题。

问题的根本原因是,Azure Web App Service 默认情况下将继续使用 .net9(.net 9.0.100),并且会忽略 Web 应用程序中的自定义 .net 版本(例如 .net6.0)或项目。

问题似乎来自应用服务本身。我建议您可以向产品反馈网站报告此问题:Azure 社区

要解决此问题,您可以在项目根目录定义 global.json 文件并设置目标 .net 版本。

例如:.net6.0

global.json

{
  "sdk": {
    "version": "6.0.424",
    "rollForward": "latestFeature"
  }
}

以下是 Web App 中可用的 .net 版本:

enter image description here

在这种情况下,它将使用 global.json 文件中设置的版本来构建和部署您的项目。

© www.soinside.com 2019 - 2024. All rights reserved.