Skip to content
This repository was archived by the owner on Oct 4, 2021. It is now read-only.

Commit 992faa9

Browse files
Rodrigo Moyarodrmoya
authored andcommitted
[DotNetCore] Fix detection of required runtime for the project being run
Fixes https://devdiv.visualstudio.com/DevDiv/_workitems/edit/982889
1 parent 7f623f8 commit 992faa9

File tree

3 files changed

+25
-32
lines changed

3 files changed

+25
-32
lines changed

main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreNotInstalledInfoBar.cs

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,28 +32,17 @@ namespace MonoDevelop.DotNetCore
3232
{
3333
class DotNetCoreNotInstalledInfoBar
3434
{
35-
string downloadUrl = DotNetCoreDownloadUrl.GetDotNetCoreDownloadUrl ();
35+
string downloadUrl;
3636

37-
public string Message { get; set; }
38-
public bool IsUnsupportedVersion { get; set; }
39-
public bool IsNetStandard { get; set; }
40-
public DotNetCoreVersion RequiredDotNetCoreVersion { get; set; }
41-
public string CurrentDotNetCorePath { get; set; }
42-
43-
public void Prompt ()
37+
public void Prompt (string message, DotNetCoreVersion requiredDotNetCoreVersion)
4438
{
4539
var items = new InfoBarItem [] {
4640
new InfoBarItem (GettextCatalog.GetString ("Download .NET Core"), InfoBarItemKind.Button, DownloadButtonClicked, true)
4741
};
48-
49-
if (IsUnsupportedVersion || IsNetStandard || RequiredDotNetCoreVersion == null) //for .net standard we'll show generic message
50-
Message = DotNetCoreSdk.GetNotSupportedVersionMessage ();
51-
else {
52-
Message = DotNetCoreSdk.GetNotSupportedVersionMessage (RequiredDotNetCoreVersion.OriginalString);
53-
downloadUrl = DotNetCoreDownloadUrl.GetDotNetCoreDownloadUrl (RequiredDotNetCoreVersion);
54-
}
5542

56-
IdeApp.Workbench.ShowInfoBar (false, new InfoBarOptions (Message) {
43+
downloadUrl = requiredDotNetCoreVersion != null ? DotNetCoreDownloadUrl.GetDotNetCoreDownloadUrl (requiredDotNetCoreVersion) : DotNetCoreDownloadUrl.GetDotNetCoreDownloadUrl ();
44+
45+
IdeApp.Workbench.ShowInfoBar (false, new InfoBarOptions (message) {
5746
Items = items
5847
});
5948
}

main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectExtension.cs

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -204,40 +204,38 @@ protected override Task OnExecute (
204204
TargetFrameworkMoniker framework,
205205
SolutionItemRunConfiguration runConfiguration)
206206
{
207+
var requiredVersion = DotNetCoreVersion.Parse (Project.TargetFramework.Id.Version);
207208
if (DotNetCoreRuntime.IsMissing) {
208-
return ShowCannotExecuteDotNetCoreApplicationDialog ();
209+
return ShowCannotExecuteDotNetCoreApplicationDialog (DotNetCoreRuntime.GetNotInstalledVersionMessage (requiredVersion.OriginalString), requiredVersion);
210+
}
211+
if (Project.TargetFramework.IsNetCoreApp () &&
212+
!DotNetCoreRuntime.Versions.Any (x => x.OriginalString.StartsWith (Project.TargetFramework.Id.Version, StringComparison.OrdinalIgnoreCase))) {
213+
return ShowCannotExecuteDotNetCoreApplicationDialog (DotNetCoreRuntime.GetNotInstalledVersionMessage (requiredVersion.OriginalString), requiredVersion);
209214
}
210215

211216
return base.OnExecute (monitor, context, configuration, framework, runConfiguration);
212217
}
213218

214-
Task ShowCannotExecuteDotNetCoreApplicationDialog ()
219+
Task ShowCannotExecuteDotNetCoreApplicationDialog (string message, DotNetCoreVersion requiredVersion)
215220
{
216-
return Runtime.RunInMainThread (() => {
217-
CreateInfoBarInstance ().Prompt ();
218-
});
221+
return Runtime.RunInMainThread (() => CreateInfoBarInstance ().Prompt (message, requiredVersion));
219222
}
220223

221-
Task ShowDotNetCoreNotInstalledDialog (bool unsupportedSdkVersion)
224+
Task ShowDotNetCoreNotInstalledDialog (string message, DotNetCoreVersion requiredVersion)
222225
{
223226
return Runtime.RunInMainThread (() => {
224227
if (ShownDotNetCoreSdkNotInstalledDialogForSolution ())
225228
return;
226229

227230
Project.ParentSolution.ExtendedProperties [ShownDotNetCoreSdkInstalledExtendedPropertyName] = "true";
228231

229-
CreateInfoBarInstance (unsupportedSdkVersion).Prompt ();
232+
CreateInfoBarInstance ().Prompt (message, requiredVersion);
230233
});
231234
}
232235

233-
DotNetCoreNotInstalledInfoBar CreateInfoBarInstance (bool unsupportedSdkVersion = false)
236+
DotNetCoreNotInstalledInfoBar CreateInfoBarInstance ()
234237
{
235-
return new DotNetCoreNotInstalledInfoBar {
236-
IsUnsupportedVersion = unsupportedSdkVersion,
237-
RequiredDotNetCoreVersion = DotNetCoreVersion.Parse (Project.TargetFramework.Id.Version),
238-
CurrentDotNetCorePath = sdkPaths.MSBuildSDKsPath,
239-
IsNetStandard = Project.TargetFramework.Id.IsNetStandard ()
240-
};
238+
return new DotNetCoreNotInstalledInfoBar ();
241239
}
242240

243241
bool ShownDotNetCoreSdkNotInstalledDialogForSolution ()
@@ -289,7 +287,8 @@ protected override void OnItemReady ()
289287
return;
290288

291289
if (HasSdk && !IsDotNetCoreSdkInstalled ()) {
292-
ShowDotNetCoreNotInstalledDialog (sdkPaths.IsUnsupportedSdkVersion);
290+
var requiredVersion = DotNetCoreVersion.Parse (Project.TargetFramework.Id.Version);
291+
ShowDotNetCoreNotInstalledDialog (DotNetCoreSdk.GetNotSupportedVersionMessage (requiredVersion.OriginalString), requiredVersion);
293292
}
294293

295294
if (Project.ParentSolution == null)

main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreRuntime.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public static bool IsMissing {
102102
get { return !IsInstalled; }
103103
}
104104

105-
internal static DotNetCoreVersion[] Versions { get; private set; }
105+
internal static DotNetCoreVersion [] Versions { get; private set; }
106106

107107
internal static bool IsNetCore1xInstalled ()
108108
{
@@ -140,5 +140,10 @@ internal static void SetInstalled (bool installed)
140140
{
141141
IsInstalled = installed;
142142
}
143+
144+
internal static string GetNotInstalledVersionMessage (string version = "")
145+
{
146+
return GettextCatalog.GetString (".NET Core {0} runtime is required to run this application, and is not installed. Install the latest update to the .NET Core {0} runtime by visiting {1}", version, DotNetCoreDownloadUrl.GetDotNetCoreDownloadUrl (version));
147+
}
143148
}
144149
}

0 commit comments

Comments
 (0)