$header = @" "@ $footer = @" "@ function WriteBuilds($allConfigs, $srcDir, $projName) { $configs = ""; # Sort via Target then OS $ac = $allConfigs | sort target, os foreach($c in $ac) { if ($c.relpath -eq $null) { continue } $config = " $dc"; $projectLines = $pf[0..1]; $pfContinue = 2; if ($pf[2] -match "Import") { $projectLines += " "; $projectLines += $projectConfigProperty; $projectLines += " " } else { if ($pf[3] -match "Configuration") { $pf[3] = $projectConfigProperty; } elseif ($pf[3] -match "Setting default TargetGroup" -and $pf[4] -match "TargetGroup") { $projectLines += " "; $projectLines += $projectConfigProperty; $projectLines += " " $pfContinue = 6; } else { Write-Host $($proj.FullName + " doesn't have a Configuration block!"); s $proj.FullName } } $projectLines += $pf[$pfContinue..$pf.Length]; sc $proj.FullName $projectLines } } function CleanupProjects($proj, $pf) { $writeFile = $false; $lineCount $filtered += $pf | ? { $lineCount++; if ($lineCount -gt 4 -and $_ -match "Library") { $writeFile = $true; return $false; } return $true; }; if ($writeFile) { sc $proj.FullName $filtered } } function GetConfigurations($projs, $srcDir, $projName) { $allConfigs = @(); foreach($proj in $projs) { $pf = gc $proj; $pfcs = @(); #CleanupProjects $proj $pf $pf | ? { $_ -match "'(?Windows|Linux|OSX|FreeBSD)?_?(?net\d\d\d?|netcore\d\d|netcore\d\daot|netcoreapp\d\.\d|dnxcore\d\d|dotnet\d\d)?_?Debug\|AnyCPU'" } | % { $os = $matches["osg"]; $target = $matches["tg"]; $relPath = $proj.FullName.Replace($srcDir.FullName+"\", ""); #if ($target -match "netcore.+") { $os = "Windows" } if ($os -eq "Windows") { $os = "Windows_NT" } $ht = new-object System.Object $ht | Add-Member -type NoteProperty -name os -value $os $ht | Add-Member -type NoteProperty -name target -value $target $ht | Add-Member -type NoteProperty -name relPath -value $relPath $ht | Add-Member -type NoteProperty -name projName -value $projName $ht | Add-Member -type NoteProperty -name sortKey -value $($os+"-"+$target+"_"+$relPath) $pfcs += $ht; } $defaultConfig = GetDefaultConfiguration $pfcs $proj.FullName WriteDefaultConfiguration $defaultConfig $proj $pf $allConfigs += $pfcs; } return $allConfigs | sort target, os; } $srcDirs = dir .\src\*\src $layoutDir = "D:\corefx-packages-backup\packages\Debug\layout\runtimes\win7-x64\lib\netcoreapp2.0" foreach($srcDir in $srcDirs) { $projName = $srcDir.Parent.Name $pjOrig = "$srcDir\project.json" $pj = "$layoutDir\$projName.deps" $plj = "$srcDir\project.lock.json" $proj = "$srcDir\$projName.csproj" Write-Host "Looking at $pj" if (Test-Path $pj) { $deps = new-object System.Collections.ArrayList $pjc = gc $pj; foreach ($line in $pjc) { if ($line -match "\`"`(?.*`)\`": \`"\d") { $item = $matches["dep"]; if ($item -eq "Microsoft.TargetingPack.Private.CoreCLR") { $deps.Add("System.Private.CoreLib") | out-null } elseif ($item -eq "Microsoft.TargetingPack.NETFramework.v4.6") { } elseif ($item -eq "Microsoft.TargetingPack.NETFramework.v4.6.1") { } elseif ($item -eq "Microsoft.TargetingPack.NETFramework.v4.6.2") { } elseif ($item -eq "Microsoft.TargetingPack.Private.NETNative") { } elseif ($item -eq "Microsoft.NETCore.Platforms") { } else { $deps.Add($item) | out-null } } } $pjOrigC = gc $pjOrig; foreach ($line in $pjOrigC) { if ($line -match "\`"`(?.*`)\`": \`"\d") { $item = $matches["dep"]; if ($item -eq "System.Diagnostics.Contracts") { $deps.Add($item) | out-null } elseif ($item -eq "System.Diagnostics.Tools") { $deps.Add($item) | out-null } } } $projc = gc $proj; $projc2 = $projc | % { if ($_ -match "None Include=`"project.json`"") { $($deps | % { " " }) } else { $_ } } $projc2 | sc $proj del $pjOrig #del $plj } }