I came across a very interesting difference between the two approaches, but in the context of having two projects, one of which is used by several developers and one of them for each developer.
Say the shared project VS is called projectS, and the private project is called projectP
Now, if the goal is to have a central development, and the developer needs to access the source definitions from both projectP and ProjectS, so pressing โF12โ or โGo To Definitionโ in VS will result in a full definition, then we should use the link to the project, not the link to the DLL, otherwise pressing F12 will lead to the definition of the compiled "metadata", excluding all comments of the developer and other relevant data.
When adding links to ProjectS from ProjectP, VS will allow links to files included in projectS and refer to projectP using the source definition in projectS, and not to the "metadata" DLL associated with the specified project (ProjectS.dll). However, projectS.dll will be included in the Links and Development Times folder, and the runtime will be fine.
When adding links to DLLs, VS will resolve links from the "metadata" stored in ProjectS.dll, even if the link project was added to the ProjectP solution as an "existing project". This would allow the runtime to be in order, however, the developer will not be able to press F12 and go to the source definition in projectS, he / she will have to do this manually from the solution search area.
source share