[MonoDevelop] About cyclic dependencies and more

Lluis Sanchez lluis at ximian.com
Tue Apr 18 10:36:31 EDT 2006


Hi!

> Hello MonoDevelopers...
> 
> When translating MonoDevelop I noticed that there is a string warning
> the user about the lacking feature of managing cyclic dependencies with
> MonoDevelop. However, I have tried to make a cyclic dependency and
> MonoDevelop has not warned me, and instead it has showed me the
> following exception:
> 
> > Ocurrió una excepción: Exception has been thrown by the target of an invocation.
> > 
> > System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> MonoDevelop.Projects.CyclicBuildOrderException: Exception of type MonoDevelop.Projects.CyclicBuildOrderException was thrown.
> > in <0x00291> MonoDevelop.Projects.Combine:Insert (Int32 index, MonoDevelop.Projects.CombineEntryCollection allProjects, MonoDevelop.Projects.CombineEntryCollection sortedEntries, System.Boolean[] inserted, System.Boolean[] triedToInsert)
> > in <0x00155> MonoDevelop.Projects.Combine:Insert (Int32 index, MonoDevelop.Projects.CombineEntryCollection allProjects, MonoDevelop.Projects.CombineEntryCollection sortedEntries, System.Boolean[] inserted, System.Boolean[] triedToInsert)
> > in <0x00155> MonoDevelop.Projects.Combine:Insert (Int32 index, MonoDevelop.Projects.CombineEntryCollection allProjects, MonoDevelop.Projects.CombineEntryCollection sortedEntries, System.Boolean[] inserted, System.Boolean[] triedToInsert)
> > in <0x000eb> MonoDevelop.Projects.Combine:TopologicalSort (MonoDevelop.Projects.CombineEntryCollection allProjects)
> > in <0x0003a> MonoDevelop.Projects.Combine:GetAllProjects (Boolean topologicalSort)
> > in <0x000bd> MonoDevelop.GtkCore.GuiBuilder.GuiBuilderService:UpdateWidgetRegistry ()
> > in <0x00007> MonoDevelop.GtkCore.GuiBuilder.GuiBuilderService:OnReferencesChanged (System.Object sender, MonoDevelop.Projects.ProjectReferenceEventArgs e)
> > in (wrapper delegate-invoke) System.MulticastDelegate:invoke_void_object_ProjectReferenceEventArgs (object,MonoDevelop.Projects.ProjectReferenceEventArgs)
> > in <0x00036> __ProjectReferenceEventHandler_DelegateFactory:Dispatch (System.Object )
> > in (wrapper delegate-invoke) System.MulticastDelegate:invoke_void_object (object)
> > in <0x00045> MonoDevelop.Core.Gui.GuiSyncContext:AsyncDispatch (MonoDevelop.Core.Gui.StatefulMessageHandler cb, System.Object ob)
> > in <0x00070> __ProjectReferenceEventHandler_DelegateFactory:ProxyCall (System.Object , MonoDevelop.Projects.ProjectReferenceEventArgs )
> > in (wrapper delegate-invoke) System.MulticastDelegate:invoke_void_object_ProjectReferenceEventArgs (object,MonoDevelop.Projects.ProjectReferenceEventArgs)
> > in <0x00023> MonoDevelop.Projects.Combine:OnReferenceAddedToProject (MonoDevelop.Projects.ProjectReferenceEventArgs e)
> > in <0x00011> MonoDevelop.Projects.Combine:NotifyReferenceAddedToProject (System.Object sender, MonoDevelop.Projects.ProjectReferenceEventArgs e)
> > in (wrapper delegate-invoke) System.MulticastDelegate:invoke_void_object_ProjectReferenceEventArgs (object,MonoDevelop.Projects.ProjectReferenceEventArgs)
> > in <0x00023> MonoDevelop.Projects.Combine:OnReferenceAddedToProject (MonoDevelop.Projects.ProjectReferenceEventArgs e)
> > in <0x00011> MonoDevelop.Projects.Combine:NotifyReferenceAddedToProject (System.Object sender, MonoDevelop.Projects.ProjectReferenceEventArgs e)
> > in (wrapper delegate-invoke) System.MulticastDelegate:invoke_void_object_ProjectReferenceEventArgs (object,MonoDevelop.Projects.ProjectReferenceEventArgs)
> > in (wrapper delegate-invoke) System.MulticastDelegate:invoke_void_object_ProjectReferenceEventArgs (object,MonoDevelop.Projects.ProjectReferenceEventArgs)
> > in <0x0001d> MonoDevelop.Projects.Project:OnReferenceAddedToProject (MonoDevelop.Projects.ProjectReferenceEventArgs e)
> > in <0x0003c> MonoDevelop.Projects.Project:NotifyReferenceAddedToProject (MonoDevelop.Projects.ProjectReference reference)
> > in <0x00070> MonoDevelop.Projects.ProjectReferenceCollection:OnInsertComplete (Int32 index, System.Object value)
> > in <0x00075> System.Collections.CollectionBase:System.Collections.IList.Add (System.Object value)--- End of inner exception stack trace ---
> > 
> > in <0x0010e> System.Reflection.MonoMethod:Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture)
> > in <0x0001a> System.Reflection.MethodBase:Invoke (System.Object obj, System.Object[] parameters)
> > in <0x00015> MonoDevelop.Components.Commands.CommandHandlerInfo:Run (System.Object cmdTarget)
> > in <0x0035a> MonoDevelop.Components.Commands.CommandManager:DispatchCommand (System.Object commandId, System.Object dataItem)
> 
> 
> Is this the expected behaviour? Should I file a bug for that?

Yes, please.

> 
> I have found this issue when working with the "MonoDevelop.mds" solution
> file, from which I have found the following issues:
> 
> 
> - When clicking on "Clean solution" after a compilation has been failed,
> the following exception arised:
> 
> > Ocurrió una excepción: Object reference not set to an instance of an object
> > 
> > System.NullReferenceException: Object reference not set to an instance of an object
> > in <0x0008d> MonoDevelop.Projects.Combine:Clean ()
> > in <0x00094> MonoDevelop.Projects.Combine:Clean ()
> > in <0x0001e> MonoDevelop.Ide.Commands.CleanSolutionHandler:Run ()
> > in <0x0000b> MonoDevelop.Components.Commands.CommandHandler:Run (System.Object dataItem)
> > in <0x00056> MonoDevelop.Components.Commands.ActionCommand:DispatchCommand (System.Object dataItem)
> > in <0x0039a> MonoDevelop.Components.Commands.CommandManager:DispatchCommand (System.Object commandId, System.Object dataItem)

Please file a bug report for this as well.

> 
> 
> - The MonoDevelop.Documentation project depends on MonoDevelop.Projects,
> which depends also on MonoDevelop.Documentation, 

This last reference should be removed.

> so why is here this
> cyclic dependency? Is desirable to fix the namespaces (adding one more
> project, I wonder...) so as to remove it? I suppose yes, so as to be
> able to make a self compilation of MonoDevelop inside MonoDevelop,
> although I deduce that a whole build is not possible (yet?).
> 
> - When opening MonoDevelop.mds I have obtained a FileNotFound exception.
> The fix is to replace "VBNetBinding.mds" by "VBNetBinding.mdp".

The missing mds file is now in SVN.

> 
> - Some files referenced in projects are not found (for example,
> GettextCatalog.cs, but the one that exists is the same file ended wit
> ".cs.in"). I suppose this is because GettextCatalog.cs must be generated
> from GettextCatalog.cs.in, am I right? 

Yes.

> Would it be possible to
> pre-generate it before loading and working with the MonoDevelop.mds
> solution? (BTW, the same happens with AssemblyInfo.cs <->
> AssemblyInfo.cs.in in the same project:
> Core/src/MonoDevelop.Core/MonoDevelop.Core.mdp .)

Those files are generated when running the configure script. We can't
change that.

> 
> - It seems that the file Core/src/MonoDevelop.Core/MonoDevelop.Core.mds
> is not used and the one that is referenced from Core.mds is
> Core/src/MonoDevelop.Core/MonoDevelop.Core.mdp, so it should be safe to
> delete it.

Deleted.

Thanks!
Lluis.




More information about the Monodevelop-list mailing list