title: Disable transitive project reference in .NET Standard 2
body: <p>I'm writing an MVC website using ASP.NET Core 2.0.</p>
  
  <p>In the ASP.NET Core project (let's call it <code>Web</code>), I reference a .NET Standard 2 project in the same solution (let's call it <code>Service</code>). The <code>Service</code> project also references a third .NET Standard 2 library in the solution (let's call this one <code>Business</code>). The <code>Business</code> project declares a type called <code>Model</code>.</p>
  
  <p>The problem is that I can use <code>Model</code> in the <code>Web</code> project (i.e. the compiler sees the type <code>Model</code> and I can do <code>var a = new Model();</code>) as if the <code>Web</code> project has referenced <code>Business</code>, but it actually only has a reference to <code>Service</code>.</p>
  
  <p>How can I hide <code>Model</code> from <code>Web</code>? Is this a new feature in ASP.NET Core 2 or all .NET Standard projects are like this?</p>
  
  <p><strong>Edit</strong></p>
  
  <p>As specified <a href="https://stackoverflow.com/questions/42428571">here</a>, this is due to transitive project references which is a new "feature" in .NET Standard, but how do I fix it?</p>