There are a couple of issues with app host selection:
- Some projects use
DisableImplicitFrameworkReferences to disable any package references, downloads, etc. that aren't explicitly specified. In some cases this is used for a "restore-only" project that simply downloads a package. It would be expected that the DisableImplicitFrameworkReferences property would stop an AppHost pack from being downloaded, but currently it doesn't. This can lead to problems with package downgrades, or where an app host can't be found for the specified RID.
RuntimeFrameworkVersion can be specified as metadata on a FrameworkReference. However, there's no way to do the same thing for the AppHost pack (besides specifying the RuntimeFrameworkVersion property which applies to all shared frameworks. This makes it difficult to consume a specific build of .NET Core.