2017-07-01 103 views
2

为什么Nuget(版本4.2.0)总是在(VS 2017)项目的父文件夹中创建“Packages”文件夹?我现在创建了一个简单的测试项目(没有解决方案,没有.sln文件),它甚至发生。为什么Nuget在项目的父文件夹中创建“Packages”文件夹?

这是否意味着有一个nuget.config的某处告诉Nuget这样做,并且我必须为每个项目创建一个nuget.config以获得在我的项目文件夹中创建的“Packages”文件夹,如预期的那样?

我在我的第二台个人电脑上试过了,那里的行为是一样的。

我在c:\ Users \ Me \ 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="nuget.org" value="https://www.nuget.org/api/v2/" /> 
    </packageSources> 
    <activePackageSource> 
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" /> 
    </activePackageSource> 
    <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> 

没有NuGet.Config到%ProgramFiles(x86)的%\的NuGet \ CONFIG \

+2

如果您使用packages.config文件,NuGet将在解决方案所在的目录中创建一个packages文件夹。 NuGet.Config文件可以用来选择不同的位置。没有特定项目的包文件夹的概念 - 默认位置始终基于解决方案文件的位置。 –

+0

即使没有一个? – IngoB

+1

如果您使用的是packages.config文件,那么NuGet将为您的项目将引用的包创建一个包目录。如果你不想在你的解决方案中包含一个软件包目录,你应该在项目中使用project.json文件或PackageRefence项目。 –

回答

1

为什么的NuGet创造了该项目的父文件夹的“包”文件夹?

的包路径是默认相对于解决方案文件夹,我们不能指示的NuGet来为每个项目创建一个包文件夹。让我来解释一下这个默认设置的原因。

按照NuGet.Config,我们可以使用repositoryPath更改默认安装路径:

<config> 
    <add key="repositoryPath" value="..\package" /> 
</config> 

它可以是相对路径,该文件是基于当前的解决方案。但是,通过使用一个相对路径设置或绝对路径设置,每个项目在一个解决方案中的不能有不同的程序包路径。因此,默认包路径是相对于解决方案文件夹而不是项目。

相关问题