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

Ubuntu下.NET6.0 NuGet包遇NU1701警告及CS0234错误求助

问题描述

在Ubuntu系统下开发供其他项目引用的NuGet包,包与消费项目均基于.NET 6.0,各自的.csproj中都定义了<TargetFramework>net6.0</TargetFramework>,遇到以下问题:

  • 打包NuGet包时无错误、警告,流程正常;
  • 还原.nupkg时触发NU1701警告:

warning NU1701: Package 'TestCore 1.0.0' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' instead of the project target framework 'net6.0'. This package may not be fully compatible with your project.

  • 运行代码时触发CS0234错误:

The type or namespace name 'Core' does not exist in the namespace 'Verisoft' (are you missing an assembly reference?)


NuGet包的.csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <PackageId>TestCore</PackageId>
    <Version>1.0.0</Version>
    <Authors>Nir Gallner</Authors>
    <Company>VeriSoft</Company>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <IsPackable>true</IsPackable>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Allure.Commons" Version="3.5.0.73" />
    <PackageReference Include="log4net" Version="2.0.14" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
    <PackageReference Include="Microsoft.Playwright.NUnit" Version="1.22.0" />
    <PackageReference Include="NUnit" Version="3.13.3" />
    <PackageReference Include="Nunit.Allure" Version="1.2.1.1" />
    <PackageReference Include="NUnit3TestAdapter" Version="4.2.1" />
    <PackageReference Include="NUnit.Analyzers" Version="3.3.0" />
    <PackageReference Include="coverlet.collector" Version="3.1.2" />
    <PackageReference Include="RestSharp" Version="108.0.1" />
  </ItemGroup>

</Project>

消费项目的.csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <IsPackable>false</IsPackable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Allure.Commons" Version="3.5.0.73" />
    <PackageReference Include="log4net" Version="2.0.14" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
    <PackageReference Include="Microsoft.Playwright.NUnit" Version="1.22.0" />
    <PackageReference Include="NUnit" Version="3.13.3" />
    <PackageReference Include="Nunit.Allure" Version="1.2.1.1" />
    <PackageReference Include="NUnit3TestAdapter" Version="4.2.1" />
    <PackageReference Include="NUnit.Analyzers" Version="3.3.0" />
    <PackageReference Include="coverlet.collector" Version="3.1.2" />
    <PackageReference Include="RestSharp" Version="108.0.1" />
    <PackageReference Include="NUnit.ConsoleRunner" Version="3.15.2" />
    <PackageReference Include="TestCore" Version="1.0.0" />
  </ItemGroup>

  <ItemGroup>
    <None Update="allureConfig.json">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
    <None Update="log4net.config">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>

  <ItemGroup>
    <Reference Include="TestCore">
      <Path>./TestCoreBuilds</Path>
    </Reference>
  </ItemGroup>

</Project>

解决方案

1. 修复NU1701框架不匹配警告

该警告说明NuGet包被识别为.NET Framework兼容包,而非.NET 6.0包,解决步骤:

  • 彻底清理并重新打包:
    执行命令清理项目残留,重新生成包:
    dotnet clean
    dotnet restore
    dotnet pack --configuration Release
    
  • 明确声明包的目标框架:
    在NuGet包的.csproj的<PropertyGroup>中添加以下配置,强制指定框架兼容性:
    <TargetFrameworks>net6.0</TargetFrameworks>
    <PackageTargetFallback>net6.0</PackageTargetFallback>
    <RuntimeIdentifiers>linux-x64;win-x64;osx-x64</RuntimeIdentifiers>
    
  • 排查依赖兼容性:
    检查Nunit.Allure等依赖包是否仅支持.NET Framework,替换为兼容.NET 6.0的版本(例如升级到最新版Nunit.Allure)。

2. 修复CS0234命名空间不存在错误

该错误源于消费项目无法正确识别NuGet包中的命名空间,解决步骤:

  • 移除引用冲突:
    消费项目同时添加了NuGet包引用和本地程序集引用,导致冲突,删除本地引用的代码块:
    <!-- 删除此段 -->
    <ItemGroup>
      <Reference Include="TestCore">
        <Path>./TestCoreBuilds</Path>
      </Reference>
    </ItemGroup>
    
  • 验证NuGet包内容:
    解压生成的TestCore.1.0.0.nupkg,检查是否存在net6.0目录,且目录下有TestCore.dll;通过反编译工具确认dll中包含Verisoft.Core命名空间。
  • 确认命名空间拼写:
    检查NuGet包项目中的代码是否确实使用了Verisoft.Core命名空间,无拼写错误。

3. 最终验证

在消费项目中执行以下命令,强制清理并还原依赖:

dotnet clean
dotnet restore --force

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:45:50