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

项目引用拉取错误框架版本致Jenkins构建失败

多目标框架项目引用的MSBuild构建版本冲突问题

问题背景与现象

解决方案内的ProjectA配置了多目标框架:<TargetFrameworks>net48;net6.0</TargetFrameworks>。其他基于.NET 4.8的项目引用ProjectA后构建正常,但单元测试项目在Jenkins代理通过MSBuild构建时出现编译错误(本地VS2022构建完全正常):

程序集'ProjectA, Version=24.3.99.0, Culture=neutral, PublicKeyToken=null'使用的System.Xml.ReaderWriter版本6.0.0.0高于引用的4.1.1.0版本
程序集'ProjectA, Version=24.3.99.0, Culture=neutral, PublicKeyToken=null'使用的System.Runtime版本6.0.0.0高于引用的4.1.2.0版本

从错误信息判断,单元测试项目错误拉取了ProjectA的.NET 6版本而非匹配的.NET 4.8版本。将ProjectA改为仅构建net48时,单元测试项目可正常构建。

已尝试的无效操作

  • 在单元测试项目的ProjectReference中显式指定目标框架,无效果:
<ItemGroup>
    <ProjectReference Include="..\..\src\ProjectA\ProjectA.csproj" >
        <SetTargetFramework>TargetFramework=net48</SetTargetFramework>
    </ProjectReference>
</ItemGroup>
  • 将单元测试项目分别切换为.NET 4.8和.NET 6进行构建,均出现相同的版本冲突错误。

附加异常信息

单元测试项目同时出现关联编译错误:

error CS0119: 'Extensions.Attributes(IEnumerable)' 是方法,在此上下文中无效
对应代码片段:

var value = node.Attributs["Key"];

注:node为XmlNode类型,Attributes是XmlAttributeCollection的属性,本地VS2022可正常编译,但MSBuild构建报错。

单元测试项目引用的NuGet包:Moq 4.18.4、NUnit 4.1.0、NUnit3TestAdapter 4.5.0、Should 1.1.20

最终解决方案

未找到.NET 4.8单元测试项目错误拉取ProjectA的.NET 6程序集的根本原因(同配置的其他解决方案无此问题),最终将单元测试项目迁移为.NET 6后,所有构建错误均消失。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:32:44