Browse Source

Applied form designer assembly loading patch by Alex Prudkiy.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@921 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
5bb64ccc37
  1. 23
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs
  2. 42
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/SideTabDesigner.cs

23
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs

@ -121,6 +121,25 @@ namespace ICSharpCode.FormsDesigner
} }
} }
Assembly MyResolveEventHandler(object sender, ResolveEventArgs args)
{
LoggingService.Debug("FormsDesignerViewContent: MyResolve: " + args.Name);
//skip already loaded
Assembly lastAssembly = null;
foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies()) {
//LoggingService.Info("Assembly..." + asm.FullName);
if (asm.FullName == args.Name) {
lastAssembly = asm;
}
}
if (lastAssembly != null) {
LoggingService.Info("ICSharpAssemblyResolver found..." + args.Name);
return lastAssembly;
}
return null;
}
void LoadDesigner() void LoadDesigner()
{ {
LoggingService.Info("Form Designer: BEGIN INITIALIZE"); LoggingService.Info("Form Designer: BEGIN INITIALIZE");
@ -151,7 +170,9 @@ namespace ICSharpCode.FormsDesigner
designerResourceService.Host = Host; designerResourceService.Host = Host;
DesignerLoader designerLoader = loaderProvider.CreateLoader(generator); DesignerLoader designerLoader = loaderProvider.CreateLoader(generator);
AppDomain.CurrentDomain.AssemblyResolve += MyResolveEventHandler;
designSurface.BeginLoad(designerLoader); designSurface.BeginLoad(designerLoader);
AppDomain.CurrentDomain.AssemblyResolve -= MyResolveEventHandler;
generator.Attach(this); generator.Attach(this);
@ -545,7 +566,7 @@ namespace ICSharpCode.FormsDesigner
} }
} }
#endregion #endregion
/// <summary> /// <summary>
/// Reloads the form designer if the language property has changed. /// Reloads the form designer if the language property has changed.
/// </summary> /// </summary>

42
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/SideTabDesigner.cs

@ -153,9 +153,11 @@ namespace ICSharpCode.FormsDesigner.Gui
} }
} }
} }
ToolboxItem item = new ToolboxItem(t); ToolboxItem item = new ToolboxItem(t);
item.ComponentsCreating += ToolboxComponentsCreatingEventHandler;
item.ComponentsCreated += ToolboxComponentsCreatedEventHandler;
if (images[imageName] != null) { if (images[imageName] != null) {
try { try {
if(images[imageName] is Bitmap) if(images[imageName] is Bitmap)
@ -165,7 +167,7 @@ namespace ICSharpCode.FormsDesigner.Gui
} }
} }
toolBoxItems.Add(item); toolBoxItems.Add(item);
skip:; skip:;
} }
} }
@ -173,6 +175,40 @@ namespace ICSharpCode.FormsDesigner.Gui
return toolBoxItems; return toolBoxItems;
} }
void ToolboxComponentsCreatingEventHandler (
Object sender,
ToolboxComponentsCreatingEventArgs e)
{
AppDomain.CurrentDomain.AssemblyResolve += MyResolveEventHandler;
}
void ToolboxComponentsCreatedEventHandler (
Object sender,
ToolboxComponentsCreatedEventArgs e)
{
AppDomain.CurrentDomain.AssemblyResolve -= MyResolveEventHandler;
}
Assembly MyResolveEventHandler(object sender, ResolveEventArgs args)
{
LoggingService.Debug("Side Tab Designer: MyResolve: " + args.Name);
//skip already loaded
Assembly lastAssembly = null;
foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies()) {
//LoggingService.Info("Assembly..." + asm.FullName);
if (asm.FullName == args.Name) {
lastAssembly = asm;
}
}
if (lastAssembly != null) {
LoggingService.Info("ICSharpAssemblyResolver found..." + args.Name);
return lastAssembly;
}
return null;
}
void SelectedTabItemChanged(object sender, EventArgs e) void SelectedTabItemChanged(object sender, EventArgs e)
{ {
AxSideTabItem item = (sender as AxSideTab).ChoosedItem; AxSideTabItem item = (sender as AxSideTab).ChoosedItem;

Loading…
Cancel
Save