我有一个使用Nuget的Visual Studio 2013项目。我在解决方案的根目录中有一个packages.config文件,定义了我们想要安装的Nuget包。我还在解决方案的根目录中有一个nuget.config文件,定义了packageSources,以及一些packageSourceCredentials。其中一个包源是我们公司的私人回购。
如果我在解决方案的根目录中打开命令提示符,并键入nuget restore
它可以正常工作,并且能够访问我们的私有存储库以获取我们使用的一些自定义包。
但是如果我在Visual Studio 2013中打开解决方案并构建它,则在尝试下载我们的自定义包时会失败,因为它显然忽略了我们的nuget.config文件,因此不知道我们的私有nuget repo。
我可以进入工具>选项并添加我们的私人仓库,但我们正在尝试在解决方案本身内做所有事情,以便在没有自定义配置的情况下构建开箱即用。
为什么VS 2013会忽略nuget.config?
答案 0 :(得分:18)
编辑NuGet.config后重新启动Visual Studio!
我注意到VS2012在重新启动之前没有接受对NuGet.config的更改。
答案 1 :(得分: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 Package Restore。如果你不同时从每个项目中恢复地毯炸弹包恢复,可能会遗留一些可能干扰新方法的逻辑。例如,如果从解决方案中删除了.nuget文件夹,则nuget.config文件仍可能存在冲突。
答案 2 :(得分:1)
我发现如果您有一个多项目解决方案,项目全部位于解决方案文件夹下的文件夹中,那么将NuGet.config放在项目文件夹中并不起作用。它没有拿起私人包源。如果您将NuGet.config放在解决方案文件夹中, 可以正常工作。
也就是说,没有工作:
当 工作时
我还发现disableSourceControlIntegration
选项在\NuGet.config
中指定后无效。它仅适用于.nuget\NuGet.config
。所以我有两个配置文件用于我的解决方案,一个在根目录下保存包源配置,另一个在.nuget
文件夹中包含disableSourceControlIntegration
选项。
使用Visual Studio 2012 Update 5和NuGet Package Manager扩展2.8.5进行测试。
答案 3 :(得分:0)
在您的解决方案网站项目或Web应用程序项目下? 我认为该网站项目忽略了nuget.config文件。