public static IPackageManagementProject GetProject(this IPackageManagementSolution solution, DotNetProject project) { var projectProxy = new DotNetProjectProxy(project); var repository = PackageManagementServices.PackageRepositoryCache.CreateAggregateWithPriorityMachineCacheRepository(); return(solution.GetProject(repository, projectProxy)); }
public void UpdatePackage() { var node = (PackageDependencyNode)CurrentNode.DataItem; var project = new DotNetProjectProxy(node.Project); PackageReferenceNodeCommandHandler.UpdatePackage( project, node.Name, !node.IsReleaseVersion()); }
#pragma warning restore 67 public IEnumerable <PackageInstallerServiceFactory.PackageMetadata> GetInstalledPackages(Project project) { var solutionManager = PackageManagementServices.Workspace.GetSolutionManager(project.ParentSolution); var proxy = new DotNetProjectProxy((DotNetProject)project); var np = solutionManager.GetNuGetProject(proxy); if (np == null) { yield break; } var packages = np.GetInstalledPackagesAsync(default(CancellationToken)).WaitAndGetResult(default(CancellationToken)); if (packages == null) { yield break; } foreach (var p in packages) { yield return(new PackageInstallerServiceFactory.PackageMetadata(p.PackageIdentity.Id, p.PackageIdentity.Version.ToFullString())); } }
static async Task <AnalyzersFromAssembly> GetProjectDiagnosticsAsync(Project project, string language, CancellationToken cancellationToken) { if (project == null) { return(AnalyzersFromAssembly.Empty); } AnalyzersFromAssembly result; if (diagnosticCache.TryGetValue(project, out result)) { return(result); } result = new AnalyzersFromAssembly(); var dotNetProject = project as DotNetProject; if (dotNetProject != null) { var proxy = new DotNetProjectProxy(dotNetProject); if (proxy.HasPackages()) { var packagesPath = await GetPackagesPath(proxy); foreach (var file in Directory.EnumerateFiles(packagesPath, "*.dll", SearchOption.AllDirectories)) { cancellationToken.ThrowIfCancellationRequested(); try { var asm = Assembly.LoadFrom(file); result.AddAssembly(asm); } catch (Exception) { } } } } diagnosticCache[project] = result; return(result); }
protected override void Run() { DotNetProject project = IdeApp.ProjectOperations.CurrentSelectedProject as DotNetProject; var dotNetProjectProxy = new DotNetProjectProxy(project); if (project == null) { return; } INativeTypesHandler nativeTypesHandler = null; //SupportedLanguage names currently returns an empty item and the 'languageName' the DotNetProject //is initialized with. This might be an array to enable extension for other projects? DotNetProject //only returns an empty and languageName. See source link. // https://github.com/mono/monodevelop/blob/dcafac668cbe8f63b4e42ea7f8f032f13aba8221/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs#L198 if (project.SupportedLanguages.Contains("C#")) { nativeTypesHandler = NativeTypeHandlers.CSharpNativeTypesHandler; } if (project.SupportedLanguages.Contains("F#")) { nativeTypesHandler = NativeTypeHandlers.FSharpNativeTypesHandler; } if (project.SupportedLanguages.Contains("VBNet")) { nativeTypesHandler = NativeTypeHandlers.VbNetNativeTypesHandler; } if (nativeTypesHandler == null) { throw new ArgumentNullException("No supported languages found"); } string fileName = "ServiceReference"; int count = 0; bool exists = true; while (exists) { count++; var existingFile = project.Files.FirstOrDefault(x => x.FilePath.FileName == fileName + count.ToString() + nativeTypesHandler.CodeFileExtension); exists = existingFile != null; } var dialog = new AddReferenceDialog(fileName + count.ToString(), nativeTypesHandler); dialog.Run(); string finalFileName = dialog.ReferenceName + nativeTypesHandler.CodeFileExtension; string code = dialog.CodeTemplate; dialog.Destroy(); if (!dialog.AddReferenceSucceeded) { return; } IdeApp.Workbench.StatusBar.ShowReady(); IdeApp.Workbench.StatusBar.ShowMessage("Adding ServiceStack Reference..."); IdeApp.Workbench.StatusBar.Pulse(); string fullPath = Path.Combine(project.BaseDirectory.FullPath.ToString(), finalFileName); using (var streamWriter = File.CreateText(fullPath)) { streamWriter.Write(code); streamWriter.Flush(); } project.AddFile(fullPath, BuildAction.Compile); try { Task.Run(() => { AddNuGetPackageReference(dotNetProjectProxy, "ServiceStack.Client"); AddNuGetPackageReference(dotNetProjectProxy, "ServiceStack.Interfaces"); AddNuGetPackageReference(dotNetProjectProxy, "ServiceStack.Text"); }).ContinueWith(task => { IdeApp.Workbench.StatusBar.ShowReady(); IdeApp.Workbench.StatusBar.Pulse(); }, TaskScheduler.FromCurrentSynchronizationContext()); } catch (Exception ex) { //TODO Error message for user var messageDialog = new MessageDialog( (Gtk.Window)IdeApp.Workbench.RootWindow.Toplevel, DialogFlags.Modal, MessageType.Warning, ButtonsType.Close, "An error occurred trying to add required NuGet packages. Error : " + ex.Message + "\r\n\r\nGenerated service reference will require ServiceStack.Interfaces as a minimum."); messageDialog.Run(); messageDialog.Destroy(); IdeApp.Workbench.StatusBar.ShowReady(); IdeApp.Workbench.StatusBar.Pulse(); } }