* 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.
1. Rebase on new LibraryExporter
2. Update dependency name to "fx/<name>" for reference assembly
3. Update framework friendly name
4. Fix dependency message regression
5. Update tests
- Ported nuget package building code over from dnu. Moved that code to use NuGet v3 primitives.
- Simplified the package builder API
- Left out resources and schema detection for now
- This folder should remain self contained as the code will be copied into NuGet v3.
- Missing features include symbols packages