Browse Source

(temporarily) fix #292: Opening .xaml file that makes use of user controls causes SharpDevelop to load the user .dlls

pull/297/head
Siegfried Pammer 12 years ago
parent
commit
2f32cc398d
  1. 20
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/MyTypeFinder.cs
  2. 45
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfToolbox.cs
  3. 8
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs

20
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/MyTypeFinder.cs

@ -26,15 +26,17 @@ namespace ICSharpCode.WpfDesign.AddIn
f.file = file; f.file = file;
f.ImportFrom(CreateWpfTypeFinder()); f.ImportFrom(CreateWpfTypeFinder());
var compilation = SD.ParserService.GetCompilationForFile(file.FileName); // TODO : reimplement this!
foreach (var referencedAssembly in compilation.ReferencedAssemblies) { // DO NOT USE Assembly.LoadFrom
try { // var compilation = SD.ParserService.GetCompilationForFile(file.FileName);
var assembly = Assembly.LoadFrom(referencedAssembly.GetReferenceAssemblyLocation()); // foreach (var referencedAssembly in compilation.ReferencedAssemblies) {
f.RegisterAssembly(assembly); // try {
} catch (Exception ex) { // var assembly = Assembly.LoadFrom(referencedAssembly.GetReferenceAssemblyLocation());
ICSharpCode.Core.LoggingService.Warn("Error loading Assembly : " + referencedAssembly.FullAssemblyName, ex); // f.RegisterAssembly(assembly);
} // } catch (Exceptions ex) {
} // ICSharpCode.Core.LoggingService.Warn("Error loading Assembly : " + referencedAssembly.FullAssemblyName, ex);
// }
// }
return f; return f;
} }

45
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfToolbox.cs

@ -70,27 +70,30 @@ namespace ICSharpCode.WpfDesign.AddIn
if (f != null && !addedAssemblys.Contains(f)) { if (f != null && !addedAssemblys.Contains(f)) {
try { try {
var assembly = Assembly.LoadFrom(f); // DO NOT USE Assembly.LoadFrom!!!
// see http://community.sharpdevelop.net/forums/t/19968.aspx
SideTab sideTab = new SideTab(sideBar, assembly.FullName.Split(new[] {','})[0]); // TODO : reimplement this!
sideTab.DisplayName = StringParser.Parse(sideTab.Name); // var assembly = Assembly.LoadFrom(f);
sideTab.CanBeDeleted = false; //
sideTab.ChoosedItemChanged += OnChoosedItemChanged; // SideTab sideTab = new SideTab(sideBar, assembly.FullName.Split(new[] {','})[0]);
// sideTab.DisplayName = StringParser.Parse(sideTab.Name);
sideTab.Items.Add(new WpfSideTabItem()); // sideTab.CanBeDeleted = false;
// sideTab.ChoosedItemChanged += OnChoosedItemChanged;
foreach (var t in assembly.GetExportedTypes()) //
{ // sideTab.Items.Add(new WpfSideTabItem());
if (IsControl(t)) //
{ // foreach (var t in assembly.GetExportedTypes())
sideTab.Items.Add(new WpfSideTabItem(t)); // {
} // if (IsControl(t))
} // {
// sideTab.Items.Add(new WpfSideTabItem(t));
if (sideTab.Items.Count > 1) // }
sideBar.Tabs.Add(sideTab); // }
//
addedAssemblys.Add(f); // if (sideTab.Items.Count > 1)
// sideBar.Tabs.Add(sideTab);
//
// addedAssemblys.Add(f);
} catch (Exception ex) { } catch (Exception ex) {
WpfViewContent.DllLoadErrors.Add(new SDTask(new BuildError(f, ex.Message))); WpfViewContent.DllLoadErrors.Add(new SDTask(new BuildError(f, ex.Message)));
} }

8
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs

@ -43,7 +43,8 @@ namespace ICSharpCode.WpfDesign.AddIn
BasicMetadata.Register(); BasicMetadata.Register();
WpfToolbox.Instance.AddProjectDlls(file); // TODO Move this Initialization to LoadInternal
// WpfToolbox.Instance.AddProjectDlls(file);
ProjectService.ProjectItemAdded += ProjectService_ProjectItemAdded; ProjectService.ProjectItemAdded += ProjectService_ProjectItemAdded;
@ -53,8 +54,9 @@ namespace ICSharpCode.WpfDesign.AddIn
void ProjectService_ProjectItemAdded(object sender, ProjectItemEventArgs e) void ProjectService_ProjectItemAdded(object sender, ProjectItemEventArgs e)
{ {
if (e.ProjectItem is ReferenceProjectItem) // TODO reimplement this!
WpfToolbox.Instance.AddProjectDlls(this.Files[0]); // if (e.ProjectItem is ReferenceProjectItem)
// WpfToolbox.Instance.AddProjectDlls(this.Files[0]);
} }
static WpfViewContent() static WpfViewContent()

Loading…
Cancel
Save