Browse Source

Applied forms designer assembly loading patch by Alex Prudkiy.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1722 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
cbbedce145
  1. 2
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs
  2. 14
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/CustomComponentsSideTab.cs
  3. 23
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/TypeResolutionService.cs

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

@ -132,9 +132,7 @@ namespace ICSharpCode.FormsDesigner
designerResourceService.Host = Host; designerResourceService.Host = Host;
DesignerLoader designerLoader = loaderProvider.CreateLoader(generator); DesignerLoader designerLoader = loaderProvider.CreateLoader(generator);
TypeResolutionService.AddAssemblyResolver();
designSurface.BeginLoad(designerLoader); designSurface.BeginLoad(designerLoader);
TypeResolutionService.RemoveAssemblyResolver();
generator.Attach(this); generator.Attach(this);

14
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/CustomComponentsSideTab.cs

@ -110,23 +110,13 @@ namespace ICSharpCode.FormsDesigner.Gui
protected override IComponent[] CreateComponentsCore(IDesignerHost host) protected override IComponent[] CreateComponentsCore(IDesignerHost host)
{ {
Init(); Init();
TypeResolutionService.AddAssemblyResolver(); return base.CreateComponentsCore(host);
try {
return base.CreateComponentsCore(host);
} finally {
TypeResolutionService.RemoveAssemblyResolver();
}
} }
protected override IComponent[] CreateComponentsCore(IDesignerHost host, System.Collections.IDictionary defaultValues) protected override IComponent[] CreateComponentsCore(IDesignerHost host, System.Collections.IDictionary defaultValues)
{ {
Init(); Init();
TypeResolutionService.AddAssemblyResolver(); return base.CreateComponentsCore(host, defaultValues);
try {
return base.CreateComponentsCore(host, defaultValues);
} finally {
TypeResolutionService.RemoveAssemblyResolver();
}
} }
} }
} }

23
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/TypeResolutionService.cs

@ -44,6 +44,9 @@ namespace ICSharpCode.FormsDesigner.Services
DesignerAssemblies.Add(ProjectContentRegistry.SystemAssembly); DesignerAssemblies.Add(ProjectContentRegistry.SystemAssembly);
DesignerAssemblies.Add(typeof(System.Drawing.Point).Assembly); DesignerAssemblies.Add(typeof(System.Drawing.Point).Assembly);
DesignerAssemblies.Add(typeof(System.Windows.Forms.Design.AnchorEditor).Assembly); DesignerAssemblies.Add(typeof(System.Windows.Forms.Design.AnchorEditor).Assembly);
RegisterVSDesignerWorkaround();
AppDomain.CurrentDomain.AssemblyResolve += AssemblyResolveEventHandler;
} }
[System.Runtime.InteropServices.DllImport("kernel32.dll")] [System.Runtime.InteropServices.DllImport("kernel32.dll")]
@ -224,15 +227,6 @@ namespace ICSharpCode.FormsDesigner.Services
} }
} }
AddAssemblyResolver();
try {
asm.GetTypes(); // force loading references etc.
} catch {
// some assemblies cause strange exceptions in Reflection...
} finally {
RemoveAssemblyResolver();
}
lock (designerAssemblies) { lock (designerAssemblies) {
if (!designerAssemblies.Contains(asm)) if (!designerAssemblies.Contains(asm))
designerAssemblies.Insert(0, asm); designerAssemblies.Insert(0, asm);
@ -427,17 +421,6 @@ namespace ICSharpCode.FormsDesigner.Services
} }
#endregion #endregion
public static void AddAssemblyResolver()
{
RegisterVSDesignerWorkaround();
AppDomain.CurrentDomain.AssemblyResolve += AssemblyResolveEventHandler;
}
public static void RemoveAssemblyResolver()
{
AppDomain.CurrentDomain.AssemblyResolve -= AssemblyResolveEventHandler;
}
static Assembly AssemblyResolveEventHandler(object sender, ResolveEventArgs args) static Assembly AssemblyResolveEventHandler(object sender, ResolveEventArgs args)
{ {
LoggingService.Debug("TypeResolutionService: AssemblyResolveEventHandler: " + args.Name); LoggingService.Debug("TypeResolutionService: AssemblyResolveEventHandler: " + args.Name);

Loading…
Cancel
Save