为什么即使设置了包源映射,我也会收到中央包管理警告 NU1507?

问题描述 投票:0回答:2

我正在尝试 NuGet 中的新 Central Package Management 功能。

如文档中所述,如果您使用多个 NuGet 源(我使用的),现在需要在

nuget.config
文件中配置包源映射,否则您应该收到
NU1507
警告。

我的简化文件树是这样的:

  • MySolution.sln
  • Proj1.csproj
  • MyLibrary\
    (这是一个包含我所有共享项目的外部存储库)
    • Directory.Packages.props
    • nuget.config
    • Proj2\
      (示例库项目)
      • Proj2.csproj

以下是

Proj1.csproj
内容:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net7.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
    </PropertyGroup>
    <PropertyGroup>
        <DefaultItemExcludes>$(DefaultItemExcludes);MyLibrary\**\*</DefaultItemExcludes>
    </PropertyGroup>
</Project>

这是

Directory.Packages.props

<Project>
    <PropertyGroup>
        <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
    </PropertyGroup>
    <ItemGroup>
        <PackageVersion Include="JetBrains.Annotations" Version="2022.1.0" />
    </ItemGroup>
</Project>

这是

nuget.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <clear/>
        <add key="nuget.org" value="https://api.nuget.org/v3/index.json"/>
        <add key="Custom NuGet" value="https://nuget.mydomain.net/"/>
    </packageSources>

    <packageSourceMapping>
        <packageSource key="nuget.org">
            <package pattern="*"/>
        </packageSource>
        <packageSource key="Custom NuGet">
            <package pattern="MyNamespace.*"/>
        </packageSource>
    </packageSourceMapping>
</configuration>

Proj2.csproj

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net7.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
    </PropertyGroup>
</Project>

在官方文档中,恢复包时应该使用

MyLibrary\nuget.config
,因为它位于
Proj2.csproj
的父目录中,实际上当我通过
dotnet build
构建解决方案时它可以工作,但是当我构建它时Visual Studio 我仍然收到
NU1507
警告。

我知道我可以通过将

nuget.config
文件复制到与解决方案文件相同的目录中来解决该问题(警告消失),但我有数百个包含
MyLibrary
目录的项目,我想保持所有配置集中。

此外,当它从命令行构建时,它可以按预期工作,那么我做错了什么?

visual-studio msbuild nuget
2个回答
1
投票

配置文件中的一切似乎都是正确的。但是 MS 文档提到了此注释:中央包管理正在积极开发中。您可以在 Nuget/Home

提供任何反馈

您可以尝试检查以下建议:

1 检查您的 Visual Studio 版本,此功能适用于 Visual Studio 2022.17.2 及更高版本。因为较旧的工具会忽略中央包管理配置和功能。查看更多信息请参阅文档:CPM

2 如果您无法加入包源映射但想要使用中央包管理,可以抑制警告。请参考文档:

<PropertyGroup>
  <NoWarn>$(NoWarn);NU1507</NoWarn>
</PropertyGroup>

3 使用

 dotnet nuget list source
获取包源列表并检查是否启用。


0
投票

Visual Studio 解决方案:

工具->选项->Nuget 包管理器->包源映射

  • 点击“添加”
  • 输入:“微软。*”
  • 选择=> nuget.org

结果:

© www.soinside.com 2019 - 2024. All rights reserved.