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 @@ -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()
{
LoggingService.Info("Form Designer: BEGIN INITIALIZE");
@ -151,7 +170,9 @@ namespace ICSharpCode.FormsDesigner @@ -151,7 +170,9 @@ namespace ICSharpCode.FormsDesigner
designerResourceService.Host = Host;
DesignerLoader designerLoader = loaderProvider.CreateLoader(generator);
AppDomain.CurrentDomain.AssemblyResolve += MyResolveEventHandler;
designSurface.BeginLoad(designerLoader);
AppDomain.CurrentDomain.AssemblyResolve -= MyResolveEventHandler;
generator.Attach(this);
@ -545,7 +566,7 @@ namespace ICSharpCode.FormsDesigner @@ -545,7 +566,7 @@ namespace ICSharpCode.FormsDesigner
}
}
#endregion
/// <summary>
/// Reloads the form designer if the language property has changed.
/// </summary>

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

@ -153,9 +153,11 @@ namespace ICSharpCode.FormsDesigner.Gui @@ -153,9 +153,11 @@ namespace ICSharpCode.FormsDesigner.Gui
}
}
}
ToolboxItem item = new ToolboxItem(t);
item.ComponentsCreating += ToolboxComponentsCreatingEventHandler;
item.ComponentsCreated += ToolboxComponentsCreatedEventHandler;
if (images[imageName] != null) {
try {
if(images[imageName] is Bitmap)
@ -165,7 +167,7 @@ namespace ICSharpCode.FormsDesigner.Gui @@ -165,7 +167,7 @@ namespace ICSharpCode.FormsDesigner.Gui
}
}
toolBoxItems.Add(item);
skip:;
}
}
@ -173,6 +175,40 @@ namespace ICSharpCode.FormsDesigner.Gui @@ -173,6 +175,40 @@ namespace ICSharpCode.FormsDesigner.Gui
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)
{
AxSideTabItem item = (sender as AxSideTab).ChoosedItem;

Loading…
Cancel
Save