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 InstallPackageDirectlyCodeActionOperation(
                        reference._installerService, document, reference._source,
                        reference._packageName, versionOpt,
                        includePrerelease: false, isLocal: isLocal);

                    return(new InstallPackageAndAddImportData(
                               oldDocument, newDocument, installOperation));
                }
Ejemplo n.º 2
0
            private static CodeAction CreateCodeAction(
                Document document,
                AddImportFixData fixData,
                IPackageInstallerService installerService,
                string versionOpt,
                bool isLocal
                )
            {
                var title =
                    versionOpt == null
                        ? FeaturesResources.Find_and_install_latest_version
                        : isLocal
                            ? string.Format(FeaturesResources.Use_local_version_0, versionOpt)
                            : string.Format(FeaturesResources.Install_version_0, versionOpt);

                var installOperation = new InstallPackageDirectlyCodeActionOperation(
                    installerService,
                    document,
                    fixData.PackageSource,
                    fixData.PackageName,
                    versionOpt,
                    includePrerelease: false,
                    isLocal: isLocal
                    );

                // Nuget hits should always come after other results.
                return(new InstallPackageAndAddImportCodeAction(
                           document,
                           fixData,
                           title,
                           installOperation
                           ));
            }
 public InstallPackageAndAddImportData(
     Document oldDocument, Document newDocument,
     InstallPackageDirectlyCodeActionOperation installOperation)
 {
     OldDocument      = oldDocument;
     NewDocument      = newDocument;
     InstallOperation = installOperation;
 }
 public InstallPackageAndAddImportOperation(
     DocumentId changedDocumentId,
     SourceText oldText,
     SourceText newText,
     InstallPackageDirectlyCodeActionOperation item2)
 {
     _changedDocumentId       = changedDocumentId;
     _oldText                 = oldText;
     _newText                 = newText;
     _installPackageOperation = item2;
 }
Ejemplo n.º 5
0
 public InstallPackageAndAddImportCodeAction(
     Document originalDocument,
     AddImportFixData fixData,
     string title,
     InstallPackageDirectlyCodeActionOperation installOperation)
     : base(originalDocument, fixData)
 {
     Contract.ThrowIfFalse(fixData.Kind == AddImportFixKind.PackageSymbol);
     Title             = title;
     _installOperation = installOperation;
 }