簡體   English   中英

為什么即使設置了 Package 源映射,我也會收到中央 Package 管理的警告 NU1507?

[英]Why am I getting warning NU1507 with Central Package Management even with Package Source Mapping set?

我正在 NuGet 中試用新的Central Package 管理功能。

如文檔中所述,如果您使用多個 NuGet 源(我使用的),現在需要在nuget.config文件中配置 Package 源映射,否則您應該收到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的父目錄中,實際上當我通過do.net build構建解決方案時它有效,但當我構建它時Visual Studio 我仍然收到NU1507警告。

我知道我可以通過將nuget.config文件復制到與解決方案文件相同的目錄中來解決這個問題(警告消失),但我有數百個項目包含MyLibrary目錄,我想保留所有配置集中。

此外,它在從命令行構建時按預期工作,那么我做錯了什么?

從您的配置文件來看,一切似乎都是正確的。但是 MS 文檔提到了這個注釋: Central package management is in active development 您可以在Nuget/Home提供任何反饋

以下是您可以嘗試檢查的建議:

1 檢查您的 visual studio 版本,此功能適用於 Visual Studio 2022.17.2 及更高版本。因為較舊的工具將忽略中央 package 管理配置和功能。更多信息請參閱文檔: CPM

2 如果您無法加入 Package 源映射但想使用中央 package 管理,可以抑制警告。 請參考文檔:

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

3 使用do.net nuget list source獲取package source list,查看是否啟用。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM