* Use a WorkspaceContext in dotnet-build to cache project data across multiple compilations in a single build action * Dramatically reduce string and object duplication by introducing a "Symbol Table" that shares instances of NuGetVersion, NuGetFramework, VersionRange and string across multiple lock-file parses Test Results: * Testing was done by compiling Microsoft.AspNetCore.Mvc (and it's dependencies) and taking memory snapshots after each compilation in dotMemory * We used to allocate ~3MB and deallocate ~2.5MB on EACH compilation in a single build action. This has been reduced to ~120KB allocated/deallocated * After introducing WorkspaceContext, total memory usage spiked from 6MB across the whole build action to about 13MB, introducing the symbol table dropped it back to about 5-6MB. |
||
|---|---|---|
| .. | ||
| Publishing | ||
| Utils | ||
| CompileTargets.cs | ||
| DebTargets.cs | ||
| dotnet-cli-build.xproj | ||
| InstallerTargets.cs | ||
| MsiTargets.cs | ||
| PackageDependencies.cs | ||
| PackageTargets.cs | ||
| PkgTargets.cs | ||
| PrepareTargets.cs | ||
| Program.cs | ||
| project.json | ||
| PublishTargets.cs | ||
| TestPackageProjects.cs | ||
| TestTargets.cs | ||