You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

System.Text.Json版本冲突问题咨询:含Azure Function的.NET解决方案构建异常与警告排查

解决.NET解决方案中System.Text.Json版本冲突问题

首先得说清楚你遇到问题的核心:你的netstandard2.1类库和netcoreapp3.1的Azure Functions项目之间,存在.NET Core SDK依赖解析的版本冲突,而你手动安装System.Text.Json 4.7.2的操作,其实是绕开了问题但没从根源解决,所以才会出现那个“任意选择版本”的警告。

先分析你的操作问题

netstandard2.1本身只是API标准定义,并不自带System.Text.Json的具体实现;而netcoreapp3.1已经内置了System.Text.Json(对应版本和你安装的4.7.2非常接近)。当你在类库中显式安装System.Text.Json包时,相当于给项目引入了一个额外的版本,和Azure Functions项目依赖的内置版本产生了冲突——编译器找不到明确的优先级,只能抛出警告随便选一个,虽然运行时能工作,但依赖关系变得混乱了。

正确的解决步骤

1. 移除类库中手动安装的System.Text.Json包

先把你在netstandard2.1类库中装的System.Text.Json 4.7.2删掉:

# 切换到类库项目目录执行
dotnet remove package System.Text.Json

或者在Visual Studio的NuGet包管理器里直接卸载它。

2. 用统一版本绑定解决依赖冲突

在解决方案根目录新建(如果没有的话)Directory.Build.props文件,添加以下配置,强制所有项目使用一致的依赖版本:

<Project>
  <PropertyGroup>
    <!-- 自动生成绑定重定向 -->
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
  </PropertyGroup>
  <ItemGroup>
    <!-- 统一System.Text.Json和System.Runtime的版本 -->
    <PackageReference Update="System.Text.Json" Version="4.7.2" />
    <PackageReference Update="System.Runtime" Version="4.3.0" />
  </ItemGroup>
</Project>

这样做的目的是告诉NuGet,所有项目都统一用指定版本的依赖,从根源上避免版本不一致的问题。

3. 验证Azure Functions项目的配置

确保你的Azure Functions项目确实是目标netcoreapp3.1,检查项目文件(.csproj):

<TargetFramework>netcoreapp3.1</TargetFramework>
<AzureFunctionsVersion>v3</AzureFunctionsVersion>

Azure Functions v3和netcoreapp3.1是配套的,这个配置没问题。

4. 清理并重新构建

最后清理掉旧的构建文件,重新恢复依赖并构建:

dotnet clean
dotnet restore
dotnet build

这样操作后,既解决了最初的编译错误,也能消除那个版本冲突的警告,依赖关系也更清晰。

内容的提问来源于stack exchange,提问作者mnj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 04:37:48