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)); }
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; }
public InstallPackageAndAddImportCodeAction( Document originalDocument, AddImportFixData fixData, string title, InstallPackageDirectlyCodeActionOperation installOperation) : base(originalDocument, fixData) { Contract.ThrowIfFalse(fixData.Kind == AddImportFixKind.PackageSymbol); Title = title; _installOperation = installOperation; }