2017-07-01 166 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> 

它可以是相對路徑,該文件是基於當前的解決方案。但是,通過使用一個相對路徑設置或絕對路徑設置,每個項目在一個解決方案中的不能有不同的程序包路徑。因此,默認包路徑是相對於解決方案文件夾而不是項目。

相關問題