Welcome to Shaun Luttin's public notebook. It contains rough, practical notes. The guiding idea is that, despite what marketing tells us, there are no experts at anything. Sharing our half-baked ideas helps everyone. We're all just muddling thru. Find out more about our work at bigfont.ca.

What does it mean to depend on Microsoft.NETCore.App?

Tags: asp.net-core, structured-problem-solving, draft

Problem

What does this dependency mean in the project.json file?

"Microsoft.NETCore.App": 
{
"type": "platform",
"version": "1.0.0-rc2-23931" }

Bits

What’s different between putting that dependency inside a top level `dependencies` section and putting it in a `frameworks > some-framework > dependencies` section?

How does this related to the following packages.

  • NETCore.App
  • NETStandard.App
  • NETStandard.Library
  • NETStandard.Platform
  • Microsoft.NETCore.App
  • Microsoft.NETCore

How does this related to the following Target Platform Names and Aliases?

Platform Name Alias
.NET Platform Standard (not a real platform) netstandard
.NET Core netcoreapp
.NET Framework net
Mono -

Platforms

.NET Platform Standard

  • is NOT a real platform
  • contains only reference assemblies

.NET Core, .NET Framework, and Mono

  • are anchor platforms
  • contain anchored assemblies

Definitions

Reference Assembly. Contracts only. Cannot run. No IL in method bodies.

Implementation Assembly.

  • Implements a reference assembly.
  • Can be a standalone package or be part of a platform.

Anchored Assembly.

  • Is an implementation assembly…
  • that is part of a platform not a stand-alone assembly.

TxM.

  • Target something moniker.
  • For instance, with frameworks this is TFM, and means Target Framework Moniker.

My Sense (Best Guess)

To depended on `Microsoft.NETCore.App` means to depend on a platform that includes implementation assemblies. If we put `Microsoft.NETCore.App` in our project.json dependencies section, then that means we’re going to pull the entire `Microsoft.NETCore.App` platform down from NuGet, which will include all of its implementation assemblies.