コード例 #1
0
        public override void Execute(object parameter)
        {
            var classBrowser = SD.GetService <IClassBrowser>();

            if (classBrowser != null)
            {
                IAssemblyModel assemblyModel = parameter as IAssemblyModel;
                if (assemblyModel == null)
                {
                    // Node is a project?
                    IProject project = parameter as IProject;
                    if (project != null)
                    {
                        assemblyModel = project.AssemblyModel;
                    }
                }

                if (assemblyModel == null)
                {
                    // Node is an assembly reference?
                    IAssemblyReferenceModel assemblyReference = parameter as IAssemblyReferenceModel;
                    if (assemblyReference != null)
                    {
                        // Model is an assembly reference
                        IAssemblyParserService   assemblyParserService = SD.GetRequiredService <IAssemblyParserService>();
                        IEntityModelContext      entityModelContext    = assemblyReference.ParentAssemblyModel.Context;
                        CombinedAssemblySearcher searcher = new CombinedAssemblySearcher();
                        if ((entityModelContext != null) && (entityModelContext.Project != null))
                        {
                            searcher.AddSearcher(new ProjectAssemblyReferenceSearcher(entityModelContext.Project));
                        }
                        searcher.AddSearcher(new DefaultAssemblySearcher(assemblyReference.ParentAssemblyModel.Location));
                        var resolvedFile = searcher.FindAssembly(assemblyReference.AssemblyName);
                        if (resolvedFile != null)
                        {
                            assemblyModel = assemblyParserService.GetAssemblyModelSafe(resolvedFile);
                        }
                        else
                        {
                            // Assembly file not resolvable
                            SD.MessageService.ShowWarningFormatted("Could not resolve reference '{0}'.", assemblyReference.AssemblyName.ShortName);
                        }
                    }
                }

                if (assemblyModel != null)
                {
                    // Try to remove AssemblyModel from list of UnpinnedAssemblies
                    classBrowser.UnpinnedAssemblies.Assemblies.RemoveAll(a => a.FullAssemblyName == assemblyModel.FullAssemblyName);

                    if (!classBrowser.MainAssemblyList.Assemblies.Contains(assemblyModel))
                    {
                        classBrowser.MainAssemblyList.Assemblies.Add(assemblyModel);
                    }

                    // Bring the node into view
                    classBrowser.GotoAssemblyModel(assemblyModel);
                }
            }
        }
コード例 #2
0
        public override void Execute(object parameter)
        {
            IAssemblyReferenceModel assemblyReferenceModel = parameter as IAssemblyReferenceModel;

            if (assemblyReferenceModel != null)
            {
                IAssemblyModel assemblyModel = assemblyReferenceModel.ParentAssemblyModel;
                if ((assemblyModel != null) && (assemblyModel.Context != null))
                {
                    IProject project = (parameter != null) ? assemblyModel.Context.Project : ProjectService.CurrentProject;
                    if (project == null)
                    {
                        return;
                    }

                    ProjectItem referenceProjectItem =
                        project.Items.FirstOrDefault(
                            item => {
                        if (item.ItemType == ItemType.COMReference)
                        {
                            // Special handling for COM references: Their assembly names are prefixed with "Interop."
                            return(assemblyReferenceModel.AssemblyName.ShortName == "Interop." + item.Include);
                        }
                        return((item.Include == assemblyReferenceModel.AssemblyName.ShortName) && ItemType.ReferenceItemTypes.Contains(item.ItemType));
                    });
                    if (referenceProjectItem != null)
                    {
                        ProjectService.RemoveProjectItem(referenceProjectItem.Project, referenceProjectItem);
                        project.Save();
                    }
                }
            }
        }
コード例 #3
0
		public AssemblyReferenceTreeNode(IAssemblyReferenceModel model)
		{
			if (model == null)
				throw new ArgumentNullException("model");
			this.model = model;
			
			// To avoid the "+" sign in front of node...
			this.LazyLoading = false;
		}
コード例 #4
0
        public AssemblyReferenceTreeNode(IAssemblyReferenceModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException("model");
            }
            this.model = model;

            // To avoid the "+" sign in front of node...
            this.LazyLoading = false;
        }
コード例 #5
0
		public AssemblyReferenceTreeNode(IAssemblyReferenceModel model)
		{
			if (model == null)
				throw new ArgumentNullException("model");
			this.model = model;
		}