in tools/JsonCli/src/Installer.cs [204:267]
private void InstallRemotePackages(List<Package> packages, IList<string> nuGetSources, IList<string> additionalDotNetArguments)
{
const string packageRef = @" <PackageReference Include=""{0}"" Version=""{1}"" />";
const string projectFile = @"<Project ToolsVersion=""15.0"" Sdk=""Microsoft.NET.Sdk"">
<PropertyGroup>
<TargetFrameworks>netcoreapp1.0</TargetFrameworks>
</PropertyGroup>
<ItemGroup>
<PackageReference Remove=""Microsoft.NETCore.App"" />
{0}
</ItemGroup>
</Project>";
_paths.CreateDirectory(_paths.User.ScratchDir);
string proj = Path.Combine(_paths.User.ScratchDir, "restore.csproj");
StringBuilder references = new StringBuilder();
foreach (Package pkg in packages)
{
references.AppendLine(string.Format(packageRef, pkg.Name, pkg.Version));
}
string content = string.Format(projectFile, references.ToString());
_paths.WriteAllText(proj, content);
string restored = Path.Combine(_paths.User.ScratchDir, "Packages");
List<string> restoreArgsList = new List<string>();
restoreArgsList.Add(proj);
restoreArgsList.Add("--packages");
restoreArgsList.Add(restored);
if (nuGetSources != null)
{
foreach (string nuGetSource in nuGetSources)
{
restoreArgsList.Add("--source");
restoreArgsList.Add(nuGetSource);
}
}
if (additionalDotNetArguments != null)
{
restoreArgsList.AddRange(additionalDotNetArguments);
}
var restoreArgs = restoreArgsList.ToArray();
Dotnet.Restore(restoreArgs).ForwardStdOut().ForwardStdErr().Execute();
string stagingDir = Path.Combine(_paths.User.ScratchDir, "Staging");
_paths.CreateDirectory(stagingDir);
List<string> newLocalPackages = new List<string>();
foreach (string packagePath in _paths.EnumerateFiles(restored, "*.nupkg", SearchOption.AllDirectories))
{
string stagingPathForPackage = Path.Combine(stagingDir, Path.GetFileName(packagePath));
_paths.Copy(packagePath, stagingPathForPackage);
newLocalPackages.Add(stagingPathForPackage);
}
InstallLocalPackages(newLocalPackages, false);
_paths.DeleteDirectory(_paths.User.ScratchDir);
}