title: Where should interfaces and other dependencies go in C#?
body: <p>By other dependencies I mean abstract classes, and anything else.</p>
  
  <p>I have a project in the form of a <code>dll</code> which needs a certain <code>interface</code>, <code>IInput</code>. A test project requires this interface as well, so I placed this interface in my main project, which in turn is a separate exe assembly.</p>
  
  <p>This is because eventually the main project will need to use this interface when I wire everything together. Now the problem I had was when I attempted to add a reference in the main project to the dll with a reference to the main project I recieved a circular dependency.</p>
  
  <p>I've never had this problem before, nor do I know the best way to counter it. As a temporary fix I've moved the interface to the separate dll, but very shortly I will require it in the main project so I'm back at square one.</p>
  
  <p><strong>Edit:</strong></p>
  
  <p>I should have mentioned the design, so here goes.</p>
  
  <pre><code>Menu
  Menu Tests
  Runner
  </code></pre>
  
  <p>Menu has IInput which is actually a interface adapater for a third party library in order to allow unit testing.</p>
  
  <p>So a menu needs this for input, but so will the runner. The runner project (the exe) will require input so I will need IInput again.</p>