コード例 #1
0
ファイル: Server.Extensions.cs プロジェクト: vivlimmsft/PTVS
        public async Task LoadExtension(PythonAnalysisExtensionParams extension)
        {
            using (AllowRequestCancellation()) {
                var provider = ActivateObject <ILanguageServerExtensionProvider>(extension.assembly, extension.typeName, null);
                if (provider == null)
                {
                    LogMessage(MessageType.Error, $"Extension provider {extension.assembly} {extension.typeName} failed to load");
                    return;
                }
                var ext = await provider.CreateAsync(this, extension.properties ?? new Dictionary <string, object>(), CancellationToken);

                if (ext == null)
                {
                    LogMessage(MessageType.Error, $"Extension provider {extension.assembly} {extension.typeName} returned null");
                    return;
                }

                string n = null;
                try {
                    n = ext.Name;
                } catch (NotImplementedException) {
                } catch (NotSupportedException) {
                }

                if (!string.IsNullOrEmpty(n))
                {
                    _extensions.AddOrUpdate(n, ext, (_, previous) => {
                        (previous as IDisposable)?.Dispose();
                        return(ext);
                    });
                }
            }
        }
コード例 #2
0
 public Task LoadExtension(PythonAnalysisExtensionParams extension) => LoadExtension(extension, CancellationToken.None);