Skip to content
This repository has been archived by the owner on Dec 18, 2017. It is now read-only.

Commit

Permalink
Check for min runtime version at application startup
Browse files Browse the repository at this point in the history
  • Loading branch information
Victor Hurdugaci committed Sep 14, 2015
1 parent d689333 commit d1cf461
Showing 1 changed file with 23 additions and 5 deletions.
28 changes: 23 additions & 5 deletions src/Microsoft.Dnx.ApplicationHost/DefaultHost.cs
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,8 @@ private void Initialize(RuntimeOptions options, IServiceProvider hostServices, I

_project = applicationHostContext.Project;

ValidateMinRuntimeVersion(libraries);

if (options.WatchFiles)
{
fileWatcher.OnChanged += _ =>
Expand All @@ -140,11 +142,11 @@ private void Initialize(RuntimeOptions options, IServiceProvider hostServices, I
var applicationEnvironment = new ApplicationEnvironment(Project, _targetFramework, options.Configuration, hostEnvironment);

var compilationContext = new CompilationEngineContext(
applicationEnvironment,
_runtimeEnvironment,
loadContextAccessor.Default,
new CompilationCache(),
fileWatcher,
applicationEnvironment,
_runtimeEnvironment,
loadContextAccessor.Default,
new CompilationCache(),
fileWatcher,
new ProjectGraphProvider());

// Compilation services available only for runtime compilation
Expand Down Expand Up @@ -183,6 +185,22 @@ private void Initialize(RuntimeOptions options, IServiceProvider hostServices, I
AddBreadcrumbs(libraries);
}

private void ValidateMinRuntimeVersion(IEnumerable<LibraryDescription> libraries)
{
foreach (var lib in libraries)
{
// We only need to validate if runtime abstractions is precompiled
// because when building from sources the versions are not ordered
// correctly
if (lib.Type == LibraryTypes.Package &&
string.Equals(lib.Identity.Name, "Microsoft.Dnx.Runtime.Abstractions", StringComparison.Ordinal) &&
lib.Identity.Version > new SemanticVersion(_runtimeEnvironment.RuntimeVersion))
{
throw new InvalidOperationException($"This application requires DNX version {lib.Identity.Version} or newer to run.");
}
}
}

private void AddBreadcrumbs(IEnumerable<LibraryDescription> libraries)
{
AddRuntimeServiceBreadcrumb();
Expand Down

0 comments on commit d1cf461

Please sign in to comment.