|
|
|
@ -10,6 +10,7 @@ using ICSharpCode.NRefactory.TypeSystem;
@@ -10,6 +10,7 @@ using ICSharpCode.NRefactory.TypeSystem;
|
|
|
|
|
using ICSharpCode.SharpDevelop.Dom; |
|
|
|
|
using ICSharpCode.SharpDevelop.Dom.ClassBrowser; |
|
|
|
|
using System.Linq; |
|
|
|
|
using ICSharpCode.SharpDevelop.Parser; |
|
|
|
|
|
|
|
|
|
namespace ICSharpCode.SharpDevelop.Gui.Pads |
|
|
|
|
{ |
|
|
|
@ -81,6 +82,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
@@ -81,6 +82,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
|
|
|
|
|
DebuggerModuleModel model = new DebuggerModuleModel(e.Module); |
|
|
|
|
moduleModels.Add(model); |
|
|
|
|
Assemblies.Add(model.AssemblyModel); |
|
|
|
|
foreach (var module in moduleModels) |
|
|
|
|
module.UpdateReferences(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void ModuleUnloaded(object sender, ModuleEventArgs e) |
|
|
|
@ -89,6 +92,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
@@ -89,6 +92,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
|
|
|
|
|
if (deletedModel != null) { |
|
|
|
|
moduleModels.Remove(deletedModel); |
|
|
|
|
Assemblies.Remove(deletedModel.AssemblyModel); |
|
|
|
|
foreach (var module in moduleModels) |
|
|
|
|
module.UpdateReferences(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -181,14 +186,23 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
@@ -181,14 +186,23 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void UpdateReferences() |
|
|
|
|
{ |
|
|
|
|
var model = assemblyModel as IUpdateableAssemblyModel; |
|
|
|
|
if (model == null) return; |
|
|
|
|
// this could be totally wrong ...
|
|
|
|
|
model.References = module.AppDomain.Compilation.Assemblies.Where(a => a.FullAssemblyName != module.UnresolvedAssembly.FullAssemblyName).Select(a => new DomAssemblyName(a.FullAssemblyName)).ToList(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static IAssemblyModel CreateAssemblyModel(Module module) |
|
|
|
|
{ |
|
|
|
|
// references??
|
|
|
|
|
IEntityModelContext context = new AssemblyEntityModelContext(module.Assembly.UnresolvedAssembly); |
|
|
|
|
IAssemblyModel model = SD.GetRequiredService<IModelFactory>().CreateAssemblyModel(context); |
|
|
|
|
if (model is IUpdateableAssemblyModel) { |
|
|
|
|
((IUpdateableAssemblyModel)model).Update(EmptyList<IUnresolvedTypeDefinition>.Instance, module.Assembly.TopLevelTypeDefinitions.SelectMany(td => td.Parts).ToList()); |
|
|
|
|
} |
|
|
|
|
IUpdateableAssemblyModel model = SD.GetRequiredService<IModelFactory>().CreateAssemblyModel(context); |
|
|
|
|
var types = module.Assembly.TopLevelTypeDefinitions.SelectMany(td => td.Parts).ToList(); |
|
|
|
|
model.AssemblyName = module.UnresolvedAssembly.AssemblyName; |
|
|
|
|
model.Update(EmptyList<IUnresolvedTypeDefinition>.Instance, types); |
|
|
|
|
|
|
|
|
|
return model; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|