From a074101b1dc5aff930c2e9419fa297c9033e19b4 Mon Sep 17 00:00:00 2001 From: Pavel Krymets Date: Wed, 24 Feb 2016 10:49:00 -0800 Subject: [PATCH] Add better messages for run scenarios --- src/Microsoft.DotNet.ProjectModel/ProjectContext.cs | 8 ++++++-- src/dotnet/commands/dotnet-run/RunCommand.cs | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.DotNet.ProjectModel/ProjectContext.cs b/src/Microsoft.DotNet.ProjectModel/ProjectContext.cs index 0a70f373c..9e237ff11 100644 --- a/src/Microsoft.DotNet.ProjectModel/ProjectContext.cs +++ b/src/Microsoft.DotNet.ProjectModel/ProjectContext.cs @@ -146,8 +146,12 @@ namespace Microsoft.DotNet.ProjectModel var context = Create(ProjectFile.ProjectFilePath, TargetFramework, runtimeIdentifiers); if (context.RuntimeIdentifier == null) { - var rids = string.Join(",", runtimeIdentifiers); - throw new InvalidOperationException($"Can not find runtime target for framework '{TargetFramework}' and RID's {rids}."); + var rids = string.Join(", ", runtimeIdentifiers); + throw new InvalidOperationException($"Can not find runtime target for framework '{TargetFramework}' and RID's '{rids}'. " + + "Possible causes:" + Environment.NewLine + + "1. Project is not restored or restore failed - run `dotnet restore`" + Environment.NewLine + + "2. Project is not targeting `runable` framework (`netstandardapp*` or `net*`)" + ); } return context; } diff --git a/src/dotnet/commands/dotnet-run/RunCommand.cs b/src/dotnet/commands/dotnet-run/RunCommand.cs index dd8be71c2..cc8c65e32 100644 --- a/src/dotnet/commands/dotnet-run/RunCommand.cs +++ b/src/dotnet/commands/dotnet-run/RunCommand.cs @@ -82,7 +82,9 @@ namespace Microsoft.DotNet.Tools.Run context = contexts.FirstOrDefault(c => defaultFrameworks.Contains(c.TargetFramework.Framework)); if (context == null) { - throw new InvalidOperationException($"Couldn't find target to run. Defaults: {string.Join(", ", defaultFrameworks)}"); + throw new InvalidOperationException($"Couldn't find target to run. Possible causes:" + Environment.NewLine + + "1. No project.lock.json file or restore failed - run `dotnet restore`" + Environment.NewLine + + $"2. project.lock.json has multiple targets none of which is in default list ({string.Join(", " , defaultFrameworks)})"); } }