When you create a project, Visual Studio sets it up to compile & generate a corresponding assembly. Each project generates 1 assembly, and so each has a corresponding assembly configuration to generate its assembly from.
The problem is when you create more than one project that each can generate their own assembly, and then include one of these projects in the other.
In this scenario, Visual Studio gets confused and doesn't know which config file to go off of to generate the single assembly for the project -- it finds the second assembly configuration in the included project and says "HEY, DUPLICATE! You've given me two sets of instructions for generating my assembly!"
But sometimes you still want the included project to be able to generate an assembly on it's own, but not when it is being included in another project.
To obtain this, one solution is to add conditional defines to the including project (found in project Properties). Then change the assembly config in the included project to look for this conditional define. If it is defined (by the including project), then the config can skip over it's content -- this will result in only 1 config found by VS -- the one from the including project -- problem solved!
Steps Below (screenshots included)
Step 1: Select the including/container Project > Right Click > Properties
Project properties (screenshot)
Step 2: Navigate to Build > General > Conditional compilation symbols
Add your conditional defines as shown:
Conditional compilation symbols (screenshot)
Step 3: Use conditional defines in the included project AssemblyInfo.cs
Using conditional defines (screenshot)