使用dotnet build构建时出现NuGet集中管理包NU1604错误
解决NU1604错误及NuGet集中包管理配置问题
问题根源
你的配置问题出在集中包版本管理的文件选择上:NuGet官方推荐使用Directory.Packages.props而非Directory.Build.props来存储集中版本配置。虽然Directory.Build.props能被MSBuild加载,但dotnet CLI在restore阶段无法正确识别其中的PackageVersion配置,导致认定依赖未指定版本下限,触发NU1604警告;而你开启了TreatWarningsAsErrors,警告被转为错误导致构建失败。Rider对非标准配置位置兼容性更好,因此能正常构建。
修复步骤
- 创建专用的集中版本管理文件
在根目录新建Directory.Packages.props文件,内容如下:
<Project> <PropertyGroup> <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally> </PropertyGroup> <ItemGroup> <PackageVersion Include="Ardalis.SmartEnum" Version="2.1.0" /> </ItemGroup> </Project>
- 清理原Directory.Build.props
移除其中的ManagePackageVersionsCentrally属性和PackageVersion节点,保留其他通用配置:
<Project> <PropertyGroup> <TargetFramework>net7.0</TargetFramework> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> <TreatWarningsAsErrors>true</TreatWarningsAsErrors> </PropertyGroup> </Project>
- 项目文件保持不变
你的ProjectFolder.csproj配置无需修改,继续使用无版本的PackageReference即可:
<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <PackageReference Include="Ardalis.SmartEnum" /> </ItemGroup> </Project>
- 重新执行构建流程
在根目录依次运行:
dotnet clean dotnet restore dotnet build
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

