Roslyn needs a service from project system which when passed with following information
The Assembly
project where it needs to be added,
The project where it appeared
ProjectSystem will figure out if that's a valid addition.
Project system can validate if it has all the metadata to resolve or does it needs any further data from the Build, in which case MSBuild team will add that metadata to make it possible.
While designing this API we should also keep Remove ununsed references in mind.
While we don't need to add a feature now to remove an assembly or to remove all unused assemblies, We find value in the concept of remove all unused references feature. And when we design the project system interaction to correctly add references, We should consider whether the same API will provide a suitable surface area to eventually be able to remove all unused references, the thing to keep in mind is we cann’t be passing a single dll to be removed but will have to pass the collection of all unused references for the project/sln at once.
@davkean to cleanup the above text and capture the design.
With reference to https://github.com/dotnet/roslyn/issues/37246 Creating a placeholder for now
Roslyn needs a service from project system which when passed with following information
ProjectSystem will figure out if that's a valid addition. Project system can validate if it has all the metadata to resolve or does it needs any further data from the Build, in which case MSBuild team will add that metadata to make it possible.
While designing this API we should also keep Remove ununsed references in mind. While we don't need to add a feature now to remove an assembly or to remove all unused assemblies, We find value in the concept of remove all unused references feature. And when we design the project system interaction to correctly add references, We should consider whether the same API will provide a suitable surface area to eventually be able to remove all unused references, the thing to keep in mind is we cann’t be passing a single dll to be removed but will have to pass the collection of all unused references for the project/sln at once.
@davkean to cleanup the above text and capture the design.