Search code examples
visual-studionugetprojects-and-solutionsnuget-package

How to reference related projects in the same solution when Nuget packages are the required output


I was wondering what's the best approach to reference a project in the same solution. Do you create the reference using the 'Add reference' feature or do you 'manage the nuget package' and download a certain published version. Each project in its turn will result in a Nuget package which can be referenced by other solutions.

So for other solutions it's clear. They create the reference using Nuget, but how about intrasolution project references?


Solution

  • The best approach is to create a NuGet dependency on the referenced project.

    Suppose you have two projects in your solution:

    Solution
        | ProjectA
        | ProjectB
    

    ProjectA has a reference to ProjectB and both of them are NuGet packages (both have nuspec files). If you want to create a package ProjectA that depends on ProjectB, execute in the root of ProjectA:

    NuGet Pack -IncludeReferencedProjects
    

    In the presence of IncludeReferencedProjects, NuGet will traverse the referenced projects inside the solution, looking for nuspec files (that indicates that a project is a package). If a nuspec if found, it is added as a dependency.

    In this example, it will find a nuspec file in ProjectB, and add it as a dependency. When you install ProjectA, ProjectB will also be installed and it will be added as reference.