Я хочу реализовать простое приложение WPF (.NET Framework 4.8) для размещения текстового редактора.
Этот текстовый редактор должен действовать как языковой клиент. Языковой сервер работает как внешнее приложение на основе специального DSL.
Проблема на стороне клиента: в поисках способов реализации на C# я нашел NuGet-пакет Omnisharp.Extensions.LanguageProtocol, который, казалось, идеально соответствовал моим потребностям.
Однако, просматривая репозиторий GitHub и просматривая учебные пособия/инструкции по созданию LanguageClient, я не нашел ничего, что помогло бы мне начать работу.
Я попытался создать LanguageClient следующим образом
Process process = new() { StartInfo = info };
process.Start();
LanguageClientOptions options = new();
options.WithInput(process.StandardOutput.BaseStream)
.WithOutput(process.StandardInput.BaseStream);
_client = LanguageClient.Create(options);
CancellationTokenSource cts = new();
await _client.Initialize(cts.Token);
На основе Как подключиться с помощью клиента языкового сервера C# к языковому серверу Но как только я достиг метода LanguageClient.Create, он выдает следующее исключение:
System.TypeLoadException: 'Method 'Handle' in type 'OmniSharp.Extensions.LanguageServer.Protocol.Client.WorkDone.LanguageClientWorkDoneManager' from assembly 'OmniSharp.Extensions.LanguageProtocol, Version=0.19.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022' does not have an implementation.'
Я уже пытался понизить пакет NuGet до предыдущей версии.
Проблема была связана с несоответствием версий в импортированных пакетах NuGet: после импорта Omnisharp.Extensions.LanguageClient я обновил все пакеты через пользовательский интерфейс диспетчера пакетов NuGet.
Чистый импорт пакета решил проблему.