public void AddProjectDlls(OpenedFile file) { var compilation = SD.ParserService.GetCompilationForFile(file.FileName); var typeResolutionService = new TypeResolutionService(file.FileName); foreach (var reference in compilation.ReferencedAssemblies) { string assemblyFileName = reference.GetReferenceAssemblyLocation(); if (assemblyFileName != null && !addedAssemblies.Contains(assemblyFileName)) { try { // DO NOT USE Assembly.LoadFrom!!! // see http://community.sharpdevelop.net/forums/t/19968.aspx Assembly assembly = typeResolutionService.LoadAssembly(assemblyFileName); if (assembly == null) continue; SideTab sideTab = new SideTab(sideBar, assembly.FullName.Split(new[] {','})[0]); sideTab.DisplayName = StringParser.Parse(sideTab.Name); sideTab.CanBeDeleted = false; sideTab.ChosenItemChanged += OnChosenItemChanged; sideTab.Items.Add(new WpfSideTabItem()); foreach (var t in assembly.GetExportedTypes()) { if (IsControl(t)) { sideTab.Items.Add(new WpfSideTabItem(t)); } } if (sideTab.Items.Count > 1) sideBar.Tabs.Add(sideTab); addedAssemblies.Add(assemblyFileName); } catch (Exception ex) { WpfViewContent.DllLoadErrors.Add(new SDTask(new BuildError(assemblyFileName, ex.Message))); } } } }
public ProjectAssemblyResolver(ICompilation compilation, TypeResolutionService typeResolutionService) { this.compilation = compilation; this.typeResolutionService = typeResolutionService; AppDomain.CurrentDomain.AssemblyResolve += AssemblyResolve; }