private void UpdateCliWithLatestNuGetAssemblies(string cliDirectory) { var nupkgsDirectory = DotnetCliUtil.GetNupkgDirectoryInRepo(); var productVersionInfo = FileVersionInfo.GetVersionInfo(DotnetCliUtil.GetXplatDll()); var pathToPackNupkg = nupkgsDirectory + Path.DirectorySeparatorChar + "NuGet.Build.Tasks.Pack." + productVersionInfo.ProductVersion + ".nupkg"; var pathToSdkInCli = Path.Combine( Directory.GetDirectories(Path.Combine(cliDirectory, "sdk")) .First()); using (var nupkg = new PackageArchiveReader(pathToPackNupkg)) { var pathToPackSdk = Path.Combine(pathToSdkInCli, "Sdks", "NuGet.Build.Tasks.Pack"); var files = nupkg.GetFiles() .Where(fileName => fileName.StartsWith("Desktop") || fileName.StartsWith("CoreCLR") || fileName.StartsWith("build") || fileName.StartsWith("buildCrossTargeting")); DeleteFiles(pathToPackSdk); CopyNupkgFilesToTarget(nupkg, pathToPackSdk, files); foreach (var coreClrDll in Directory.GetFiles(Path.Combine(pathToPackSdk, "CoreCLR"))) { var fileName = Path.GetFileName(coreClrDll); if (fileName != "NuGet.Build.Tasks.Pack.dll") { File.Copy(coreClrDll, Path.Combine(pathToSdkInCli, fileName), true); } } } var pathToRestoreNupkg = nupkgsDirectory + Path.DirectorySeparatorChar + "NuGet.Build.Tasks." + productVersionInfo.ProductVersion + ".nupkg"; using (var nupkg = new PackageArchiveReader(pathToRestoreNupkg)) { var files = nupkg.GetFiles() .Where(fileName => fileName.StartsWith("lib/netstandard1.3") || fileName.StartsWith("runtimes")); File.Delete(Path.Combine(pathToSdkInCli, "NuGet.Build.Tasks.dll")); File.Delete(Path.Combine(pathToSdkInCli, "NuGet.Build.Tasks.xml")); File.Delete(Path.Combine(pathToSdkInCli, "NuGet.targets")); foreach (var file in files) { var stream = nupkg.GetStream(file); stream.CopyToFile(Path.Combine(pathToSdkInCli, Path.GetFileName(file))); } } }
private void UpdateCliWithLatestNuGetAssemblies(string cliDirectory) { var nupkgsDirectory = DotnetCliUtil.GetNupkgDirectoryInRepo(); var pathToPackNupkg = FindMostRecentNupkg(nupkgsDirectory, "NuGet.Build.Tasks.Pack"); var nupkgsToCopy = new List <string> { "NuGet.Build.Tasks", "NuGet.Versioning", "NuGet.Protocol", "NuGet.ProjectModel", "NuGet.Packaging", "NuGet.LibraryModel", "NuGet.Frameworks", "NuGet.DependencyResolver.Core", "NuGet.Configuration", "NuGet.Common", "NuGet.Commands", "NuGet.CommandLine.XPlat", "NuGet.Credentials" }; var pathToSdkInCli = Path.Combine( Directory.GetDirectories(Path.Combine(cliDirectory, "sdk")) .First()); using (var nupkg = new PackageArchiveReader(pathToPackNupkg)) { var pathToPackSdk = Path.Combine(pathToSdkInCli, "Sdks", "NuGet.Build.Tasks.Pack"); var files = nupkg.GetFiles() .Where(fileName => fileName.StartsWith("Desktop") || fileName.StartsWith("CoreCLR") || fileName.StartsWith("build") || fileName.StartsWith("buildCrossTargeting")); DeleteDirectory(pathToPackSdk); CopyNupkgFilesToTarget(nupkg, pathToPackSdk, files); } foreach (var nupkgName in nupkgsToCopy) { using (var nupkg = new PackageArchiveReader(FindMostRecentNupkg(nupkgsDirectory, nupkgName))) { var files = nupkg.GetFiles() .Where(fileName => fileName.StartsWith("lib/netstandard") || fileName.StartsWith("lib/netcoreapp") || fileName.Contains("NuGet.targets")); CopyFlatlistOfFilesToTarget(nupkg, pathToSdkInCli, files); } } }
private void UpdateCliWithLatestNuGetAssemblies(string cliDirectory) { var nupkgsDirectory = DotnetCliUtil.GetNupkgDirectoryInRepo(); var pathToPackNupkg = FindMostRecentNupkg(nupkgsDirectory, "NuGet.Build.Tasks.Pack"); var pathToRestoreNupkg = FindMostRecentNupkg(nupkgsDirectory, "NuGet.Build.Tasks"); var pathToSdkInCli = Path.Combine( Directory.GetDirectories(Path.Combine(cliDirectory, "sdk")) .First()); using (var nupkg = new PackageArchiveReader(pathToPackNupkg)) { var pathToPackSdk = Path.Combine(pathToSdkInCli, "Sdks", "NuGet.Build.Tasks.Pack"); var files = nupkg.GetFiles() .Where(fileName => fileName.StartsWith("Desktop") || fileName.StartsWith("CoreCLR") || fileName.StartsWith("build") || fileName.StartsWith("buildCrossTargeting")); DeleteFiles(pathToPackSdk); CopyNupkgFilesToTarget(nupkg, pathToPackSdk, files); } }