NuGet配置文件nuget.config的应用示例

参考:

https://learn.microsoft.com/zh-cn/nuget/consume-packages/configuring-nuget-behavior

创建新配置文件

使用 .NET CLI 运行   dotnet new nugetconfig   ,创建默认 nuget.config。 有关详细信息,请参阅 dotnet CLI 命令

也可以将下方的模板手动复制到新文件中,然后使用  nuget config -configFile <filename>  设置值:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
</configuration>

设置演练

假设两个独立的驱动器上具有以下文件夹结构:

D:\Packages
    NuGet
    NuGet_Backup

首先,列出计算机级的 NuGet.Config 文件的路径和内容:

Windows:%ProgramFiles(x86)%\NuGet\Config
Mac/Linux:默认为 /etc/opt/NuGet/Config (Linux) 或 /Library/Application Support (Mac)。 如果 $NUGET_COMMON_APPLICATION_DATA 既不是 null 也不是空,则为 $NUGET_COMMON_APPLICATION_DATA/NuGet/Config。

实际内容
C:\Program Files (x86)\NuGet\Config\Microsoft.VisualStudio.Offline.config

文件内容
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\"/>
  </packageSources>
</configuration>

在列出用户级:

Windows:%appdata%\NuGet\NuGet.Config
Mac/Linux: ~/.config/NuGet/NuGet.Config 或 ~/.nuget/NuGet/NuGet.Config(因工具而异)
所有平台都支持其他配置。 这些配置无法通过工具进行编辑。
Windows:%appdata%\NuGet\config\*.Config
Mac/Linux:~/.config/NuGet/config/*.config 或 ~/.nuget/config/*.config

实际内容
C:\Users\Administrator\AppData\Roaming\NuGet\NuGet.Config

文件内容
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\" />
    <add key="192.168.226.253:8080" value="http://10.32.226.253:8080/v3/index.json" />
  </packageSources>
  <packageRestore>
    <add key="enabled" value="True" />
    <add key="automatic" value="True" />
  </packageRestore>
  <bindingRedirects>
    <add key="skip" value="False" />
  </bindingRedirects>
  <packageManagement>
    <add key="format" value="0" />
    <add key="disabled" value="False" />
  </packageManagement>
  <config>
    <add key="globalPackagesFolder" value="D:\Packages\NuGet\packages" />
  </config>
</configuration>

最后,列出当前值:

当前文件夹(又称解决方案文件夹)或上至驱动器根目录的任何文件夹。

实际内容
D:\Packages
D:\Packages\NuGet
D:\Packages\NuGet\nuget.config
D:\Packages\NuGet\config
D:\Packages\NuGet\packages
D:\Packages\NuGet_Backup
D:\Packages\NuGet_Backup\nuget.config

下面,检查实际nuget.config文件的配置影响。上面2个目录下面,有2个nuget.config文件,我们可以通过下面的命令来列出注册的源:

PS D:\Packages\NuGet_Backup> dotnet nuget list source
注册的源:
  1.  nuget.org [已启用]
      https://api.nuget.org/v3/index.json
  2.  Microsoft Visual Studio Offline Packages [已启用]
      C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\
  3.  192.168.226.253:8080 [已启用]
      http://192.168.226.253:8080/v3/index.json
warn : 正在通过 “HTTP” 源“192.168.226.253:8080 [http://192.168.226.253:8080/v3/index.json]”运行“list source”操作。将来的版本中将删除非 HTTPS 访问权限。请考虑迁移到 “HTTPS” 源。
PS D:\Packages\NuGet_Backup>

 此时,具有3个注册的源,实际的 D:\Packages\NuGet_Backup\nuget.config 文件的内容为:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\" />
    <add key="10.32.226.253:8080" value="http://10.32.226.253:8080/v3/index.json" />
  </packageSources>
  <packageRestore>
    <add key="enabled" value="True" />
    <add key="automatic" value="True" />
  </packageRestore>
  <bindingRedirects>
    <add key="skip" value="False" />
  </bindingRedirects>
  <packageManagement>
    <add key="format" value="0" />
    <add key="disabled" value="False" />
  </packageManagement>
</configuration>

我们重新检查一下另一个,列出的注册源如下:

PS D:\Packages\NuGet> dotnet nuget list source
注册的源:
  1.  nuget [已启用]
      https://api.nuget.org/v3/index.json
PS D:\Packages\NuGet>

 此时,具有1个注册的源,实际的 D:\Packages\NuGet\nuget.config 文件的内容为:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <!--To inherit the global NuGet package sources remove the <clear/> line below -->
    <clear />
    <add key="nuget" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
</configuration>

此时,该配置清除了 <packageSources>,因此 nuget.org 将不再可用作源,并仅留下 nuget 的源名。

posted @ 2024-09-02 15:56  huioo  阅读(1680)  评论(0)    收藏  举报