21

我有一个使用 Nuget 的 Visual Studio 2013 项目。我在解决方案的根目录中有一个 packages.config 文件,定义了我们要安装的 Nuget 包。我在解决方案的根目录中也有一个 nuget.config 文件,定义了 packageSources,以及一些 packageSourceCredentials。其中一个包来源是我们公司的私人仓库。

如果我在解决方案的根目录中打开命令提示符,然后键入nuget restore它就可以正常工作,并且能够访问我们的私人存储库以提取我们使用的一些自定义包。

但是,如果我在 Visual Studio 2013 中打开解决方案并构建它,尝试下载我们的自定义包时它会失败,因为它显然忽略了我们的 nuget.config 文件,因此不知道我们的私有 nuget 存储库。

我可以进入工具 > 选项并添加我们的私人存储库,但我们正在尝试在解决方案本身内完成所有工作,以便它可以开箱即用地构建,无需自定义配置。

为什么 nuget.config 被 VS 2013 忽略?

4

4 回答 4

18

编辑 NuGet.config 后重新启动 Visual Studio!

我注意到 VS2012 直到我重新启动它之后才会接受对 NuGet.config 的更改。

于 2015-04-13T22:14:53.387 回答
3

我创建了一个具有以下目录结构的新项目。

-ConsoleApplication1
    -ConsoleApplication1
    -ConsoleApplication1.sln
    -nuget.config

在添加 nuget.config 之前,我在使用 Manage Nuget Packages For Solution 功能时看不到我的任何私人存储库。当我添加 nuget.config 时,我能够在对话框窗口中看到我的新存储库。我还可以使用 nuget restore 和 VS 2013 中的构建来恢复我的包。

我的 nuget.config 看起来像这样

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageRestore>
        <add key="enabled" value="True" />
        <add key="automatic" value="True" />
    </packageRestore>
    <packageSources>
        <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
        <add key="MyRepo" value="http://XX.XX.XXX.XX:81/host/repo" />
    </packageSources>
    <activePackageSource>
        <add key="All" value="(Aggregate source)" />
    </activePackageSource>
</configuration>

根据您描述的问题,我唯一能想到的是,您之前可能曾尝试从您的项目中禁用 Nuget 包还原,然后再使用最新的还原包方法。如果您不同时从每个项目中恢复地毯式炸弹包,则可能会留下一些逻辑,这可能会干扰新方法。例如,如果您从解决方案中删除了 .nuget 文件夹,则 nuget.config 文件可能仍然在其中,从而导致冲突。

于 2014-09-25T16:14:23.650 回答
1

我发现,如果您有一个多项目解决方案,并且项目都在解决方案文件夹下的文件夹中,那么将 NuGet.config 放在项目文件夹中是行不通的。它不会获取私有包源。如果将 NuGet.config 放在解决方案文件夹中,它确实有效。

也就是说,这不起作用

  • 解决方案
    • 项目A
      • 项目A.csproj
    • 项目B
      • 项目B.csproj
      • NuGet.config

虽然这确实有效:

  • 解决方案
    • 项目A
      • 项目A.csproj
    • 项目B
      • 项目B.csproj
    • NuGet.config

发现该disableSourceControlIntegration选项在\NuGet.config. 它仅在.nuget\NuGet.config. 因此,我的解决方案有两个配置文件,一个位于根目录,其中包含包源配置,另一个位于带有选项的.nuget文件夹中。disableSourceControlIntegration

使用 Visual Studio 2012 Update 5 和 NuGet 包管理器扩展 2.8.5 进行测试。

于 2016-11-28T17:26:23.267 回答
0

你的解决方案是在 Web Site 项目下还是 Web Application 项目下?我认为该网站项目忽略了 nuget.config 文件。

于 2014-10-01T11:16:05.737 回答