title: Best practice to share common libraries between solutions in .NET
body: <p>We have pool of MSVS solutions (Solution "A", "B", "C", ... ) that share basic functionality in assembly called "Common.dll". </p>
  
  <p>There are 3-5 active solutions (that are under developing) while others are passive and hardly ever be rebuilt. </p>
  
  <p>Common.dll is always under developing. There are several options how to keep my solutions code, what will you suggest and why?</p>
  
  <p>A). <strong>Put common.dll source code to every solution</strong>. Pros: it will help active solutions to grow with common.dll side-by-side while passive solutions will be compilable. Cons: it's hard to synchronize active common.dll code between active solutions</p>
  
  <p>B). <strong>Put common.dll binary code to every solution</strong>. Pros: all projects will be compilable while common.dll code will be centralized. Cons: it's hard to grow active solutions side-by-side with common.dll</p>
  
  <p>C). <strong>Reference every project to last common.dll binaries</strong> looks like B. but it'll bring problems with passive solutions if common.dll will grow and change it's interfaces (some may say interfaces should always stay constant) </p>
  
  <p>D). ? </p>
  
  <p>Thank you in advance! </p>