-
-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathVisualStudioInstanceExtensions.cs
More file actions
38 lines (36 loc) · 1.76 KB
/
VisualStudioInstanceExtensions.cs
File metadata and controls
38 lines (36 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.Linq;
using Devlooped;
namespace vswhere
{
static class VisualStudioInstanceExtensions
{
public static Sku GetSku(this VisualStudioInstance vsInstance)
=> vsInstance.ProductId switch
{
"Microsoft.VisualStudio.Product.Enterprise" => Sku.Enterprise,
"Microsoft.VisualStudio.Product.Professional" => Sku.Professional,
"Microsoft.VisualStudio.Product.Community" => Sku.Community,
"Microsoft.VisualStudio.Product.BuildTools" => Sku.BuildTools,
"Microsoft.VisualStudio.Product.TestAgent" => Sku.TestAgent,
_ => throw new ArgumentException($"Invalid SKU {vsInstance.ProductId}. Must be one of {string.Join(", ", Enum.GetNames(typeof(Sku)).Select(x => x.ToLowerInvariant()))}.", "sku"),
};
public static Channel? GetChannel(this VisualStudioInstance vsInstance)
=> vsInstance.ChannelId switch
{
"VisualStudio.16.Release" => Channel.Release,
"VisualStudio.16.Preview" => Channel.Preview,
"VisualStudio.16.IntPreview" => Channel.IntPreview,
"VisualStudio.16.int.main" => Channel.Main,
"VisualStudio.17.Release" => Channel.Release,
"VisualStudio.17.Preview" => Channel.Preview,
"VisualStudio.17.IntPreview" => Channel.IntPreview,
"VisualStudio.17.int.main" => Channel.Main,
"VisualStudio.18.Release" => Channel.Release,
"VisualStudio.18.Preview" => Channel.Preview,
"VisualStudio.18.IntPreview" => Channel.IntPreview,
"VisualStudio.18.int.main" => Channel.Main,
_ => null,
};
}
}