param ( [string]$solution = "eShopOnContainers-ServicesAndWebApps.sln" ) $outfile = "DockerfileSolutionRestore.txt" # This script creates the $outfile file, with Dockerfile commands to restore all the packages for the solution, # so you can insert them (by hand) into Dockerfiles right before the "COPY . ." line # to increase build speed by optimizing the use of docker build images cache. # This script is only needed when adding or removing projects from the solution. Write-Output "COPY ""$solution"" ""$solution""" > $outfile Add-Content -Path $outfile "" Select-String -Path $solution -Pattern ', "(.*?\.csproj)"' | ForEach-Object { $_.Matches.Groups[1].Value.Replace("\", "/") } | Sort-Object | ForEach-Object {"COPY ""$_"" ""$_"""} | Out-File -FilePath $outfile -Append Add-Content -Path $outfile "" Select-String -Path $solution -Pattern ', "(.*?\.dcproj)"' | ForEach-Object { $_.Matches.Groups[1].Value.Replace("\", "/") } | Sort-Object | ForEach-Object {"COPY ""$_"" ""$_"""} | Out-File -FilePath $outfile -Append Add-Content -Path $outfile "" Add-Content -Path $outfile "COPY ""NuGet.config"" ""NuGet.config""" Add-Content -Path $outfile "" Add-Content -Path $outfile "RUN dotnet restore ""$solution""" Get-Content $outfile