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文件,我们可以通过下面的命令来列出注册的源:

1
2
3
4
5
6
7
8
9
10
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 @   huioo  阅读(775)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示