in src/Microsoft.NuGet.Build.Tasks/ResolveNuGetPackageAssets.cs [242:275]
private void PopulatePackageFolders(JObject lockFile)
{
// If we explicitly were given a path, let's use that
if (!string.IsNullOrEmpty(NuGetPackagesDirectory))
{
_packageFolders.Add(NuGetPackagesDirectory);
}
// Newer versions of NuGet can now specify the final list of locations in the lock file
var packageFolders = lockFile["packageFolders"] as JObject;
if (packageFolders != null)
{
foreach (var packageFolder in packageFolders.Properties())
{
_packageFolders.Add(packageFolder.Name);
}
}
// If we didn't have any folders, let's fall back to the environment variable or user profile
if (_packageFolders.Count == 0)
{
string packagesFolder = Environment.GetEnvironmentVariable("NUGET_PACKAGES");
if (!string.IsNullOrEmpty(packagesFolder))
{
_packageFolders.Add(packagesFolder);
}
else
{
_packageFolders.Add(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".nuget", "packages"));
}
}
}