Browse Source

Applied forms designer assembly loading patch by Alex Prudkiy.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1230 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
c3c8cc56f2
  1. 25
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs
  2. 14
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/CustomComponentsSideTab.cs
  3. 34
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/TypeResolutionService.cs
  4. 3
      src/AddIns/Misc/UnitTesting/Src/TestableCondition.cs
  5. 16
      src/Main/Base/Project/Src/Project/Items/ReferenceProjectItem.cs
  6. 1
      src/Main/Base/Project/Src/Services/ParserService/ParserService.cs

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

@ -123,27 +123,6 @@ namespace ICSharpCode.FormsDesigner @@ -123,27 +123,6 @@ 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) {
if (!TypeResolutionService.DesignerAssemblies.Contains(lastAssembly))
TypeResolutionService.DesignerAssemblies.Add(lastAssembly);
LoggingService.Info("ICSharpAssemblyResolver found..." + args.Name);
return lastAssembly;
}
return null;
}
void LoadDesigner()
{
LoggingService.Info("Form Designer: BEGIN INITIALIZE");
@ -174,9 +153,9 @@ namespace ICSharpCode.FormsDesigner @@ -174,9 +153,9 @@ namespace ICSharpCode.FormsDesigner
designerResourceService.Host = Host;
DesignerLoader designerLoader = loaderProvider.CreateLoader(generator);
AppDomain.CurrentDomain.AssemblyResolve += MyResolveEventHandler;
TypeResolutionService.AddAssemblyResolver();
designSurface.BeginLoad(designerLoader);
AppDomain.CurrentDomain.AssemblyResolve -= MyResolveEventHandler;
TypeResolutionService.RemoveAssemblyResolver();
generator.Attach(this);

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

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

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

@ -350,5 +350,39 @@ namespace ICSharpCode.FormsDesigner.Services @@ -350,5 +350,39 @@ namespace ICSharpCode.FormsDesigner.Services
}
return false;
}
public static void AddAssemblyResolver()
{
AppDomain.CurrentDomain.AssemblyResolve += AssemblyResolveEventHandler;
}
public static void RemoveAssemblyResolver()
{
AppDomain.CurrentDomain.AssemblyResolve -= AssemblyResolveEventHandler;
}
static Assembly AssemblyResolveEventHandler(object sender, ResolveEventArgs args)
{
LoggingService.Debug("TypeResolutionService: AssemblyResolveEventHandler: " + args.Name);
Assembly lastAssembly = null;
foreach (Assembly asm in TypeResolutionService.DesignerAssemblies) {
if (asm.FullName == args.Name) {
return asm;
}
}
foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies()) {
if (asm.FullName == args.Name) {
lastAssembly = asm;
}
}
if (lastAssembly != null) {
TypeResolutionService.DesignerAssemblies.Add(lastAssembly);
LoggingService.Info("ICSharpAssemblyResolver found..." + args.Name);
}
return lastAssembly;
}
}
}

3
src/AddIns/Misc/UnitTesting/Src/TestableCondition.cs

@ -75,7 +75,8 @@ namespace ICSharpCode.UnitTesting @@ -75,7 +75,8 @@ namespace ICSharpCode.UnitTesting
string attributeName = (m != null) ? "Test" : "TestFixture";
foreach (IAttribute attribute in (m ?? (IDecoration)c).Attributes) {
if (nameComparer.Equals(attribute.Name, attributeName)
|| nameComparer.Equals(attribute.Name, attributeName + "Attribute"))
|| nameComparer.Equals(attribute.Name, attributeName + "Attribute")
|| nameComparer.Equals(attribute.Name, "NUnit.Framework." + attributeName + "Attribute"))
{
return true;
}

16
src/Main/Base/Project/Src/Project/Items/ReferenceProjectItem.cs

@ -60,7 +60,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -60,7 +60,7 @@ namespace ICSharpCode.SharpDevelop.Project
}
[ReadOnly(true)]
[LocalizedProperty("${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.Name}",
[LocalizedProperty("${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.Name}",
Description="${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.Name.Description}")]
public string Name {
get {
@ -73,9 +73,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -73,9 +73,9 @@ namespace ICSharpCode.SharpDevelop.Project
}
[ReadOnly(true)]
[LocalizedProperty("${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.Version}",
[LocalizedProperty("${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.Version}",
Description="${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.Version.Description}")]
public Version Version {
public Version Version {
get {
AssemblyName assemblyName = GetAssemblyName(Include);
if (assemblyName != null) {
@ -99,7 +99,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -99,7 +99,7 @@ namespace ICSharpCode.SharpDevelop.Project
}
[ReadOnly(true)]
[LocalizedProperty("${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.PublicKeyToken}",
[LocalizedProperty("${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.PublicKeyToken}",
Description="${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.PublicKeyToken.Description}")]
public string PublicKeyToken {
get {
@ -116,12 +116,11 @@ namespace ICSharpCode.SharpDevelop.Project @@ -116,12 +116,11 @@ namespace ICSharpCode.SharpDevelop.Project
}
return null;
}
}
}
public override string FileName {
get {
try
{
if (Project != null) {
string hintPath = HintPath;
if (hintPath != null && hintPath.Length > 0) {
return Path.Combine(Project.Directory, hintPath);
@ -137,7 +136,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -137,7 +136,6 @@ namespace ICSharpCode.SharpDevelop.Project
return name + ".exe";
}
}
catch (Exception) { }
return Include;
}
set {

1
src/Main/Base/Project/Src/Services/ParserService/ParserService.cs

@ -403,6 +403,7 @@ namespace ICSharpCode.Core @@ -403,6 +403,7 @@ namespace ICSharpCode.Core
static void CreateDefaultProjectContent()
{
LoggingService.Info("Creating default project content");
LoggingService.Debug("Stacktrace is:\n" + Environment.StackTrace);
defaultProjectContent = new DefaultProjectContent();
defaultProjectContent.ReferencedContents.Add(ProjectContentRegistry.Mscorlib);
string[] defaultReferences = new string[] {

Loading…
Cancel
Save