コード例 #1
0
                private static async Task <InstallPackageAndAddImportData> GetInstallDataAsync(
                    PackageReference reference,
                    string versionOpt,
                    bool isLocal,
                    Document document,
                    SyntaxNode node,
                    bool placeSystemNamespaceFirst,
                    CancellationToken cancellationToken)
                {
                    var oldDocument = document;

                    reference.ReplaceNameNode(ref node, ref document, cancellationToken);

                    var newDocument = await reference.provider.AddImportAsync(
                        node, reference.SearchResult.NameParts, document, placeSystemNamespaceFirst, cancellationToken).ConfigureAwait(false);

                    // We're going to be manually applying this new document to the workspace
                    // (so we can roll it back ourselves if installing the nuget package fails).
                    // As such, we need to do the postprocessing ourselves of tihs document to
                    // ensure things like formatting/simplification happen to it.
                    newDocument = await CleanupDocumentAsync(
                        newDocument, cancellationToken).ConfigureAwait(false);

                    var installOperation = new InstallNugetPackageOperation(
                        reference._installerService, document, reference._source, reference._packageName, versionOpt, isLocal);

                    return(new InstallPackageAndAddImportData(
                               oldDocument, newDocument, installOperation));
                }
                private async Task <ImmutableArray <CodeActionOperation> > GetOperationsAsync(
                    string versionOpt,
                    bool isLocal,
                    Document document,
                    SyntaxNode node,
                    bool placeSystemNamespaceFirst,
                    CancellationToken cancellationToken)
                {
                    _reference.ReplaceNameNode(ref node, ref document, cancellationToken);

                    var newDocument = await _reference.provider.AddImportAsync(
                        node, _reference.SearchResult.NameParts, document, placeSystemNamespaceFirst, cancellationToken).ConfigureAwait(false);

                    var newSolution = newDocument.Project.Solution;

                    var operation1 = new ApplyChangesOperation(newSolution);

                    var text = await document.GetTextAsync(cancellationToken).ConfigureAwait(false);

                    var operation2 = new InstallNugetPackageOperation(
                        _reference._installerService, document, _reference._source, _reference._packageName, versionOpt, isLocal);

                    var operations = ImmutableArray.Create <CodeActionOperation>(operation1, operation2);

                    return(operations);
                }
コード例 #3
0
 public InstallPackageAndAddImportOperation(
     DocumentId changedDocumentId,
     SourceText oldText,
     SourceText newText,
     InstallNugetPackageOperation item2)
 {
     _changedDocumentId   = changedDocumentId;
     _oldText             = oldText;
     _newText             = newText;
     _installNugetPackage = item2;
 }
コード例 #4
0
 public InstallPackageAndAddImportData(Document oldDocument, Document newDocument, InstallNugetPackageOperation installOperation)
 {
     OldDocument      = oldDocument;
     NewDocument      = newDocument;
     InstallOperation = installOperation;
 }