Adding a ProjectReference to a project that is not in the same solution

21,734

Solution 1

You can't do this. A project reference includes an identifying GUID for the referenced project, which is maintained in the solution file in order to track solution build options and dependencies. If you try to reference a project that is not in the solution, Visual Studio will complain.

You can add a file reference to the assembly produced by a project that's not in the solution, of course.

UPDATE: Since this got downvoted, I'll refine my answer.

Though it's technically possible to craft a project file that references another project outside the same solution, Visual Studio won't help you to do it easily. One very good reason why it's a bad idea to do this (that I've observed) is that whatever Solution Configuration and Platform you're building (the referencing project) will be ignored if MSBuild decides to build the referenced project - the default Configuration and Platform specified in that referenced project file will be used instead. Thus you may end up with a mixture of binary types in different folders.

Solution 2

Temporarily add the project to the solution, add a reference to it, unload the project that now has a reference added to it, remove the referenced project, reload the project with the reference.

If you don't unload the project then the reference will be automatically removed by Visual Studio when the referenced project is removed.

As you can probably tell, Visual Studios not designed to do this and you'd be better defining a build order for the solutions and use assembly references instead.

Solution 3

You can definitely add a project to a solution A that is in solution B. There is not any problem with that. From my experience, it's not something that I usually have done or do, but sometimes need to. This can be especially true on large projects where you need different nodes of your architecture to reuse same code base.

Hope this helps.

Share:
21,734
lysergic-acid
Author by

lysergic-acid

Software Engineer, Game Developer, Cat Owner Blogging @ http://www.tallior.com Check out my gigs @ http://www.fiverr.com/lysergide

Updated on August 06, 2022

Comments

  • lysergic-acid
    lysergic-acid over 1 year

    While doing some refactoring of our projects and solution files, i have separated some .sln files to contain less projects.

    Occasionally i need to reference some projects from outside the scope of the current .sln file.

    For example, my initial state was this:

    SOLUTION A

    • PROJ A
    • PROJ B

    After refactoring it would look like this:

    SOLUTION A_NEW

    • PROJ A

    SOLUTION B_NEW

    • PROJ B

    My question is -- Is it possible to add a ProjectReference node to a project that is not defined in the same VS solution? (in my case, having PROJ A have a project reference to PROJ B).

    Also, if it is possible, is that recommended?

    I know that this is not possible from the VS IDE, only by editing the .csproj file manually.