Skip to content

Commit

Permalink
Merge pull request #2302 from JoeRobich/require-sdk-version
Browse files Browse the repository at this point in the history
Require a known good version of .NET SDK be installed.
  • Loading branch information
filipw authored Dec 8, 2021
2 parents e1ea340 + 21ba562 commit 565ba9f
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 2 deletions.
6 changes: 6 additions & 0 deletions src/OmniSharp.Host/HostHelpers.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using Microsoft.Extensions.Logging;
using OmniSharp.MSBuild.Discovery;
using OmniSharp.Roslyn;
using OmniSharp.Utilities;

Expand Down Expand Up @@ -28,6 +29,11 @@ public static int Start(Func<int> action)

return action();
}
catch (MSBuildNotFoundException mnfe)
{
Console.Error.WriteLine(mnfe.Message);
return 0xbad;
}
catch (Exception e)
{
Console.Error.WriteLine(e.ToString());
Expand Down
2 changes: 1 addition & 1 deletion src/OmniSharp.Host/MSBuild/Discovery/Extensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ Try updating your MSBuild to version {minimumMSBuildVersion} or higher to enable
}
else
{
logger.LogError("Could not locate MSBuild instance to register with OmniSharp");
throw new MSBuildNotFoundException("Could not locate MSBuild instance to register with OmniSharp.");
}
}

Expand Down
19 changes: 19 additions & 0 deletions src/OmniSharp.Host/MSBuild/Discovery/MSBuildNotFoundException.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using System;

namespace OmniSharp.MSBuild.Discovery
{
internal class MSBuildNotFoundException : Exception
{
public MSBuildNotFoundException()
{
}

public MSBuildNotFoundException(string message) : base(message)
{
}

public MSBuildNotFoundException(string message, Exception innerException) : base(message, innerException)
{
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,17 @@ public override ImmutableArray<MSBuildInstance> GetInstances()
{

#if NETCOREAPP
const string DotNetSdkVersion = "6.0.100";

// Restrict instances to NET 6 SDK
var instances = MicrosoftBuildLocator.QueryVisualStudioInstances()
.Where(instance => instance.Version.Major == 6);
.Where(instance => instance.Version.ToString() == DotNetSdkVersion)
.ToImmutableArray();

if (instances.Length == 0)
{
Logger.LogError($"OmniSharp requires .NET SDK version '{DotNetSdkVersion}' be installed. Please visit https://dotnet.microsoft.com/download/dotnet/6.0 to download the .NET SDK.");
}
#else
if (!PlatformHelper.IsWindows)
{
Expand Down

0 comments on commit 565ba9f

Please sign in to comment.