@@ -361,7 +361,7 @@ let InstallIntoProjects(options : InstallerOptions, forceTouch, dependenciesFile
361361 |> Seq.map ( fun kv -> kv.Key)
362362 |> Set
363363
364- let touchedProjects = System.Collections.Generic.HashSet< string >()
364+ let touchedProjects = System.Collections.Generic.HashSet<_ >()
365365 tracefn " Created dependency graph (%d packages in total)" packagesToInstall.Count
366366 let root = Path.GetDirectoryName lockFile.FileName
367367 let model = CreateModel( options.AlternativeProjectRoot, root, options.Force, dependenciesFile, lockFile, packagesToInstall, updatedGroups) |> Map.ofArray
@@ -499,17 +499,17 @@ let InstallIntoProjects(options : InstallerOptions, forceTouch, dependenciesFile
499499 if toolsVersion >= 15.0 then
500500 installForDotnetSDK root project
501501 if forceTouch then
502- touchedProjects.Add project.FileName |> ignore
502+ touchedProjects.Add project |> ignore
503503 else
504504 match touchedPackages with
505505 | Some touchedPackages ->
506506 let packageInstalled =
507507 touchedPackages
508508 |> Seq.exists ( fun ( g , p , _ , _ ) -> project.HasPackageInstalled ( g, p))
509509 if packageInstalled then
510- touchedProjects.Add project.FileName |> ignore
510+ touchedProjects.Add project |> ignore
511511 | _ ->
512- touchedProjects.Add project.FileName |> ignore
512+ touchedProjects.Add project |> ignore
513513 else
514514 project.UpdateReferences( model, directDependencies, usedPackages)
515515
@@ -558,7 +558,7 @@ let InstallIntoProjects(options : InstallerOptions, forceTouch, dependenciesFile
558558 project.Save forceTouch
559559 projectCache.[ project.FileName] <- Some project
560560
561- let first = ref true
561+ let mutable first = true
562562
563563 let allKnownLibNames =
564564 model
@@ -585,15 +585,15 @@ let InstallIntoProjects(options : InstallerOptions, forceTouch, dependenciesFile
585585
586586 ( snd kv.Value, packageRedirects))
587587 |> applyBindingRedirects
588- ! first
588+ first
589589 options.CreateNewBindingFiles
590590 options.CleanBindingRedirects
591591 ( FileInfo project.FileName) .Directory.FullName
592592 g.Key
593593 lockFile.GetAllDependenciesOf
594594 allKnownLibNames
595595 projectCache
596- first := false
596+ first <- false
597597
598598 let restoreCacheFile = Path.Combine( root, Constants.PaketRestoreHashFilePath)
599599 let hash = Paket.RestoreProcess.getLockFileHashFromContent ( lockFile.ToString())
@@ -602,8 +602,9 @@ let InstallIntoProjects(options : InstallerOptions, forceTouch, dependenciesFile
602602 Paket.RestoreProcess.writeRestoreCache restoreCacheFile { PackagesDownloadedHash = hash; ProjectsRestoredHash = hash }
603603 Paket.RestoreProcess.writeGitignore restoreCacheFile
604604
605- for project in touchedProjects do
606- let di = ( FileInfo project) .Directory
605+ for project in touchedProjects |> Seq.distinctBy ( fun p -> p.FileName) |> Seq.sortBy ( fun p -> p.FileName) do
606+ tracefn " - Project %O needs to be restored" project.Name
607+ let di = ( FileInfo project.FileName) .Directory
607608 for objDir in Directory.EnumerateDirectories( di.FullName, " obj" , SearchOption.AllDirectories) do
608609 for file in Directory.EnumerateFiles( objDir, " project.assets.json" , SearchOption.AllDirectories) do
609610 try
0 commit comments