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());
        }
Exemple #3
0
                #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()));
            }
        }
Exemple #4
0
        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();
            }
        }