NuGet.Config 文件位于 Visual Studio 项目中的啥位置?

Posted

技术标签:

【中文标题】NuGet.Config 文件位于 Visual Studio 项目中的啥位置?【英文标题】:Where is NuGet.Config file located in Visual Studio project?NuGet.Config 文件位于 Visual Studio 项目中的什么位置? 【发布时间】:2017-08-01 20:15:54 【问题描述】:

我想知道 Visual Studio 2017 项目中的 NuGet.Config 文件在哪里?我尝试在项目的根目录中创建自己的 NuGet.Config 文件,但没有找到任何新的存储库(NuGet 源)。有人知道吗?

这是我试图为我的 .Net Core 项目实现的文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="AspNetCore" value="https://dotnet.myget.org/F/aspnetcore-ci-dev/api/v3/index.json" />
    <add key="AspNetCoreTools" value="https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json" />
    <add key="NuGet" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
</configuration>

【问题讨论】:

【参考方案1】:

Visual Studio 从解决方案根目录读取 NuGet.Config 文件。尝试将其移到那里,而不是将其放在与项目相同的文件夹中。

您也可以将文件放在%appdata%\NuGet\NuGet.Config,它将在任何地方使用。

https://docs.microsoft.com/en-us/nuget/schema/nuget-config-file

【讨论】:

在 Visual Studio 2017 中打开解决方案,然后转到工具 > 选项 > NuGet 包管理器 > 包源。您应该会看到列出的来源。 默认情况下,VS2017 使用位于路径 C:\Users\yourusername\AppData\Roaming\NuGet\Nuget.config 的全局 Nuget.config 尽量不要将 nuget.config 文件与 .nuget 文件夹混淆。 如果 NuGet(v3.4.3 及更高版本)包含格式错误的 XML(标签不匹配、引号无效等),它会静默忽略整个配置文件。这就是为什么最好使用nuget config ref 来管理设置。对我来说,它在 VS2017 的解决方案级别上工作。 如果您打算使用像 Microsoft AppCenter (appcenter.ms) 这样的 CI - 那么它期望 Nuget.config 位于解决方案根目录中。 我不确定为什么在我的工作笔记本电脑上进行设置时文件 NuGet.config 为空,但在我的个人笔记本电脑上配置正确。我真的很想知道这个文件是如何创建的以及在哪个过程下创建的?它是 MSBuild 工具安装的一部分还是 NuGet vscode 扩展安装的一部分?【参考方案2】:

有多个nuget包按以下顺序读取:

    首先是NuGetDefaults.Config file。您可以在 %ProgramFiles(x86)%\NuGet\Config 中找到它。 计算机级文件。 用户级文件。您可以在 %APPDATA%\NuGet\nuget.config 中找到它。 任何名为 nuget.config 的文件,从驱动器的根目录到调用 nuget.exe 的目录。 调用 nuget.exe 时在 -configfile 选项中指定的配置文件

您可以找到更多信息here。

【讨论】:

因为一开始我很困惑,所以我想澄清一下:这里列出的顺序是 nuget 加载其设置的顺序。后面的步骤可能会覆盖以前的设置。因此,当您指定 --configfile 时,ist 仍会读取默认文件、机器级文件等。但随后 NuGet 考虑这些选项自下而上,即 --configfile 胜过用户级文件等 我不确定为什么在我的工作笔记本电脑上进行设置时文件NuGet.config 为空,但在我的个人笔记本电脑上配置正确。我真的很想知道这个文件是如何创建的以及在哪个过程下创建的?它是 MSBuild 工具安装的一部分还是 NuGet vscode 扩展安装的一部分?【参考方案3】:

除了已接受的答案之外,我想添加一个信息,即 Visual Studio 2017 中的 NuGet 包位于项目文件本身中。即,右键单击项目 -> 编辑,找到所有包引用条目。

【讨论】:

我认为您误解了这个问题。问题是您将 nuget.config 文件放在哪里(其中列出了所有可下载 nuget 的服务器)。它不是询问哪个文件列出了您项目的已安装 nuget。 @Pure.Krome 同意,但令人兴奋的是,这个人发布了这个你认为他误解了问题的答案,实际上是这个人提出了这个问题! ;D /me 躲起来,尴尬。【参考方案4】:

如果您使用代理,则必须编辑 Nuget.config 文件。

在 Windows 7 和 10 中,此文件位于以下路径中: C:\Users\YouUser\AppData\Roaming\NuGet。

包括设置:

<config>
  <add key = "http_proxy" value = "http://Youproxy:8080" />
  <add key = "http_proxy.user" value = "YouProxyUser" />
</config>

【讨论】:

以上是关于NuGet.Config 文件位于 Visual Studio 项目中的啥位置?的主要内容,如果未能解决你的问题,请参考以下文章

Nuget镜像国内加速

NuGet修改packages目录/迁移缓存文件夹

在 NuGet 配置中使用环境变量?

window系统下搭建本地的NuGet Server

Unity 中的 NuGet 包

修改VS中的NuGet包下载路径