Visual studio nuget.config忽略依赖项的依赖项(子依赖项)

Visual studio nuget.config忽略依赖项的依赖项(子依赖项),visual-studio,nuget,Visual Studio,Nuget,我的项目有一个nuget.config,并指定了一个repositoryPath。我还指定了globalPackagesFolder <config> <add key="globalPackagesFolder" value="c:\p" /> <add key="repositoryPath" value="c:\p" /> </config> 现在我想在我的项目中安装第三方软件包。此包正确位于我指定的路径 当我尝试安装另一个包时,该包依

我的项目有一个nuget.config,并指定了一个repositoryPath。我还指定了globalPackagesFolder

<config>
<add key="globalPackagesFolder" value="c:\p" />
<add key="repositoryPath" value="c:\p" />
</config>

现在我想在我的项目中安装第三方软件包。此包正确位于我指定的路径

当我尝试安装另一个包时,该包依赖于System.Net.Http,后者有其他子依赖项,nuget无法安装此包,因为路径太长

直接依赖项位于nuget.config中指定的repositoryPath中。问题是,子依赖项不位于此路径。此存储库中的文件搜索未找到匹配项

我在nuget.config中指定repositoryPath的唯一原因是我想将子依赖项移动到另一个文件夹,因为否则路径太长,nuget无法安装包。这对我的同事来说不是问题

我怎样才能改变这种行为

如果这不可能,我的问题还有其他解决方案吗? 一位同事建议缩短我的Windows登录时间,但这不是一个解决方案。我也不能缩短我们的Teamcity用户登录名

我尝试安装的软件包是由我的公司开发的。因此,如果我必须更改软件包中的设置,这不是问题

我尝试了Visual Studio 2017 Pro和Enterprise的Nuget 4.6.0版本,以及Visual Studio 2019 RC的Nuget 5.0.0版本。 目标框架是.NETCore2.1

当我将包System.Net.Http手动添加到我的项目并安装包时,没有问题,但我宁愿不这样做,除非没有其他解决方案

编辑: 为了澄清这种情况:如果我安装的包A依赖于包B,而B依赖于包C,那么包A在我指定的路径中,但B和C不在。我甚至不知道B包和C包在哪里

nuget.config忽略依赖项的依赖项(子依赖项)

这是.NET核心项目的正确行为

在dotnet core或使用
PackageReference
的项目中,仅列出对直接依赖项的引用,并且仅将直接依赖项下载到包缓存中

这就是为什么您安装的包A依赖于包B,而包B依赖于包C的原因,包A显示在您的项目文件中,如下所示:

<PackageReference Include="PackageA" Version="1.0.0" />

和缓存在指定路径中,但B和C不是

这是
PackageReference
的最大优点之一,在这里,我们不会让项目文件中充斥着消费者可能不关心的大量依赖项。将nuget软件包安装到项目中,导航到
project\u root/obj/project.assets.json
并打开此
json
,您将看到软件包及其依赖项一起列出。如果您在这里看到预期的依赖项,它将验证包是否正确编写。但是,除非您直接安装这些依赖项,否则NuGet不会将这些依赖项恢复到包缓存中


希望这有帮助。

您的意思是依赖项
System.Net.Http
在指定路径中,但
System.Net.Http
的依赖项不在该路径中?什么是依赖项,或者
System.Net.Http
的所有依赖项都不在该路径中?您的目标框架是什么?我想安装依赖于System.Net.Http的包A。System.Net.Http还有其他依赖项,我无法安装,因为路径太长。一个同事把所有东西都安装好了。包A位于指定的repositoryPath下,但此路径中没有System.Net.Http。这就是我的问题。我想要repositoryPath中的所有包,而不仅仅是顶级包。我希望在此路径中包含子依赖项。它们似乎在我的用户文件夹中的某个缓存中。我的目标框架是.NET Core 2.1感谢您的回复。要确认更多信息,是否在nuget.config中设置如下内容:
?如果是,则可能是您做错了什么,此集合适用于package.config,而不是.net core项目。但是为什么要在指定的路径中设置一个包,这很奇怪。我在nuget.config的config部分尝试了repositoryPath和globalPackagesFolder。我没有NUGET_包环境变量<代码>和
我们有核心和标准,这就是为什么我们在配置中有两个条目。好的,谢谢。所以我坚持直接向我的项目添加所有引用,如果路径太长?我希望Nuget很快就会取消字符限制。但是如果您直接将所有引用添加到项目中,并使用设置
,这些引用将缓存在
c:\p
。那你还得到路径太长的错误吗?不,那我就不会得到这个错误了。但对我来说,这只是暂时的解决办法。