title: What's the difference between the new netstandardapp and netcoreapp TFMs?
body: <p>I noticed that NuGet has recently added support for several new TFMs related to .NET Core, including:</p>
  
  <ul>
  <li><code>netstandard</code> (1.0-1.5)</li>
  <li><code>netstandardapp</code> (1.5)</li>
  <li><code>netcoreapp</code> (1.0)</li>
  </ul>
  
  <p>To the best of my knowledge, <code>netstandard</code> is the .NET Core equivalent of a portable profile; it allows you to target multiple platforms using a single moniker, instead of explicitly spelling out every platform you support, e.g. <code>portable-net45+netcore45+wp81</code>.</p>
  
  <p>Meanwhile, according to <a href="https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-standard-applications.md" rel="noreferrer">this document</a> <code>netstandardapp</code> is more like a console application in .NET Core; it represents something that any .NET Core runtime (e.g. CoreCLR, CoreRT).</p>
  
  <p>What, then, exactly is <code>netcoreapp</code> supposed to be? I found the tracking issue for it <a href="https://github.com/NuGet/Home/issues/2299" rel="noreferrer">here,</a> which includes a comment at the bottom that kinda explains what the difference is, but I don't get what the difference between</p>
  
  <blockquote>
    <p>NETStandard.Library + app hosts</p>
  </blockquote>
  
  <p>and</p>
  
  <blockquote>
    <p>.NET Core base install</p>
  </blockquote>
  
  <p>is. Could someone please explain it to me?</p>