public async Task<Package> DownloadPackage(string packageName, bool? useFullNameOverride = null) {
var depInfo = ResolvePackageName(packageName);
var useFullName = Repo.Config.UseVersionedPackageFolders;
var name = depInfo.GetFullName();
if (useFullNameOverride.HasValue)
useFullName = useFullNameOverride.Value;
await GetAndAddPackage(depInfo).ConfigureAwait(false);
var package = Package.Factory.Open(Repo,
Repo.Config.OperationMode == RepositoryOperationMode.Default
? WorkDir.GetChildDirectoryWithName(useFullName ? name : depInfo.Name)
: WorkDir,
name);
await
UpdateMultiple(package.GetNeededObjects(), new[] {package}, FindRemotesWithPackage(name).ToArray())
.ConfigureAwait(false);
return package;
}