DevOps流水线中dotnet build误用框架(NU1702)问题求助
我有一个配置为构建.NET 6和.NET 8的解决方案,本地工作站可正常构建,项目文件核心配置如下:
<Project Sdk="Microsoft.NET.Sdk" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> ... <TargetFrameworks>net8.0;net6.0</TargetFrameworks> ... </PropertyGroup> </Project>
但在DevOps系统的流水线中编译时,出现以下错误信息:
F:\Agent1_work_tool\dotnet\sdk\8.0.405\Microsoft.Common.CurrentVersion.targets(1890,5): warning NU1702: ProjectReference 'F:\Agent1_work\1546\s\Tools\XXXX.csproj' was resolved using '.NETFramework,Version=v4.8' instead of the project target framework '.NETCoreApp,Version=v6.0'. This project may not be fully compatible with your project. [F:\Agent1_work\1546\s\Tools_Test\XXXX.csproj::TargetFramework=net6.0]
F:\Agent1_work_tool\dotnet\sdk\8.0.405\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(266,5): error NETSDK1005: Assets file 'F:\Agent1_work\1546\s\Tools\Build\obj\project.assets.json' doesn't have a target for 'net48'. Ensure that restore has run and that you have included 'net48' in the TargetFrameworks for your project. [F:\Agent1_work\1546\s\Tools\XXXX.csproj::TargetFramework=net48]
即使我使用CMD脚本明确指定框架,问题依然存在:
dotnet build "XXXX.sln" --configuration Release --framework net6.0
我已通过UseDotNet@2任务下载所需.NET版本:
- task: UseDotNet@2 displayName: "Get .NET6" inputs: packageType: "sdk" version: "6.x" vsVersion: "22.x" - task: UseDotNet@2 displayName: "Get .NET8" inputs: packageType: "sdk" version: "8.x" vsVersion: "22.x.x"
更新1:
global.json当前为空:
{ }
更新2:
我已使用NuGetToolInstaller安装6.x版本:
- task: NuGetToolInstaller@1 displayName: "Get NuGet 6" inputs: versionSpec: '6.x'
更新3:
我刚在项目文件中发现多处如下重复引用:
<Reference Include="log4net"> <HintPath>..\packages\log4net.2.0.15\lib\net45\log4net.dll</HintPath> </Reference> <PackageReference Include="log4net" Version="3.0.3" />
我计划移除所有重复项及HintPath。
内容的提问来源于stack exchange,提问作者Martin

