-
Notifications
You must be signed in to change notification settings - Fork 130
Expand file tree
/
Copy pathProgram.cs
More file actions
30 lines (22 loc) · 1.14 KB
/
Program.cs
File metadata and controls
30 lines (22 loc) · 1.14 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
using System.Runtime.InteropServices;
using Ardalis.GuardClauses;
using PolyType.SourceGenerator;
using SharpIDE.MsBuildHost;
using SharpIDE.MsBuildHost.Contracts;
using StreamJsonRpc;
var sdkVersion = args[0];
Guard.Against.NullOrWhiteSpace(sdkVersion);
var projectOrSlnDirectory = new DirectoryInfo(args[1]);
if (projectOrSlnDirectory.Exists is false) throw new DirectoryNotFoundException($"Project or sln directory '{projectOrSlnDirectory.FullName}' does not exist.");
SharpIdeMsbuildLocator.Register(sdkVersion, projectOrSlnDirectory.FullName);
if (args.Contains("--diag"))
{
Console.WriteLine($"'{RuntimeInformation.FrameworkDescription}' Runtime, MSBuild from SDK: '{SharpIdeMsbuildLocator.ResolvedMsBuildSdkPath}'");
}
var inputStream = Console.OpenStandardInput();
var outputStream = Console.OpenStandardOutput();
var handler = new LengthHeaderMessageHandler(outputStream, inputStream, new NerdbankMessagePackFormatter { TypeShapeProvider = TypeShapeProvider_SharpIDE_MsBuildHost_Contracts.Default });
var rpc = new JsonRpc(handler);
rpc.AddLocalRpcTarget<IRpcBuildService>(new RpcBuildService(), null);
rpc.StartListening();
await rpc.Completion;