Hi,
I am using Infragistics 6.3 on .NET 1.1 and get a strange exception when I mouseover the Infragistics toolbar. It only occurs in the release version (not in the Visual Studio design environment).
Could someone please help and tell me why the "DockPaneCaption" thinks there is a duplicate entry in the dictionary. What do I need to do to resolve this?
System.ArgumentException: Item has already been added. Key in dictionary: "DockPaneCaption" Key being added: "DockPaneCaption" at System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add) at System.Collections.Hashtable.Add(Object key, Object value) at Infragistics.Win.AppStyling.StyleUtilities.UpdateRoleHierarchy(Hashtable table, AssemblyStyleInfo[ assemblyInfos) at Infragistics.Win.AppStyling.StyleManager.ProcessLoadedAssembliesImpl() at Infragistics.Win.AppStyling.StyleManager.GetSharedObjectProperties(String sharedObjectName) at Infragistics.Win.AppStyling.SharedObjectCache.GetProperties() at Infragistics.Win.AppStyling.PropertyInfoCache.ParseProperty(String propertyName) at Infragistics.Win.AppStyling.PropertyInfoCache.GetProperty(String propertyName) at Infragistics.Win.AppStyling.StyleManager.GetSharedObjectPropertyValue(ComponentRole componentRole, String sharedObjectName, String propertyName) at Infragistics.Win.AppStyling.ComponentRole.GetProperty(String sharedObjectName, String propertyName) at Infragistics.Win.ToolTip.get_LeftMarginResolved() at Infragistics.Win.ToolTip.CalcLineRect(Rectangle& rect, Graphics g, String text, LocationAdjustInfo adjustInfo, Font font) at Infragistics.Win.ToolTip.CalcStringSize(String text, Graphics g, LocationAdjustInfo adjustInfo, Font font) at Infragistics.Win.ToolTip.AdjustDimensions(Rectangle& rect, Graphics g, LocationAdjustInfo adjustInfo) at Infragistics.Win.ToolTip.ReAdjustForm(Rectangle rect, LocationAdjustInfo adjustInfo) at Infragistics.Win.ToolTip.Show(Point displayLocation, Boolean rightAlign) at Infragistics.Win.UltraWinToolbars.UltraToolbarsManager.DisplayToolTipHelper(String toolTipText, String toolTipTitle, String toolTipTextFormatted, String shortCutString, Boolean suppressShortcuts, Rectangle exclusionRect, Point point) at Infragistics.Win.UltraWinToolbars.UltraToolbarsManager.DisplayToolTip(ToolBase tool) at Infragistics.Win.UltraWinToolbars.ToolBase.DisplayToolTip() at Infragistics.Win.UltraWinToolbars.UltraToolbarsManager.set_ImmediateToolTipDisplayMode(Boolean value) at Infragistics.Win.UltraWinToolbars.ButtonToolUIElement.OnMouseHover() at Infragistics.Win.ControlUIElementBase.NotifyMouseHover(UIElement element) at Infragistics.Win.ControlUIElementBase.ProcessMouseHover(Object sender, EventArgs e) at Infragistics.Win.Utilities.ProcessEvent(Control control, ProcessEvent eventToProcess, EventArgs e) at Infragistics.Win.UltraControlBase.OnMouseHover(EventArgs e) at System.Windows.Forms.Control.WmMouseHover(Message& m) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
It sounds like multiple instances of the assemblies are being loaded. You can try hooking the AssemblyResolve event of the AppDomain and determine why multiple instances of the Infragistics assemblies (e.g. Infragistics.Win) are getting loaded. I'm guessing that part of your application is using one version and you may have a usercontrol or other library that references a different version or perhaps your loading assemblies using LoadFrom, etc.
Duplicate assemblies was the issue - we worked it out a couple of weeks ago but I haven't had a chance to update this thread. If you try to run an EXE with the Infragistics DLLs in it's assembly path AND also have them in the GAC, you will experience these spurious errors when you mouse-over toolbar buttons etc. Strangely it only errors the first time around and if you attempt to continue the application, it works fine.
If you have the DLLs in the GAC, simple delete them from your bin (or app) folder and it works fine.
I had the same exact problem. I had them in both GAC & bin folder. I removed the dlls from the bin folder and things started working fine.
But when we deploy the application we do not want to install the Infragistics assemblies in the GAC. We prefer them to be in the 'bin' folder. This case did not work as expected. It gave the same issue (exception) as mentioned above. i,e (An item with the same key has already been added)
Is there a solution to get this to work without installing the assemblies into the GAC ? This must be simple; What am I missing here ?
Your help is much appreciated.
Thanks
Jai
Hi Jai,
We have just created an installer for the application. That way we just distribute the Infragistics Dll files with the application and they get placed in the application path during install.
Hope that helps...
To clarify - the only reason the Dlls would be in the GAC is if the Infragistics Dev environment was installed on that particular machine. If that is the case, then the Dlls cannot be placed in the app install directory.
Having them in the app install directory will work fine if there are no dlls in the GAC.
Thanks for the Reply.
We gave the release build of the application to QA for Testing and obviously the QA person's machine does not have Infragistics installed. So the application has these Dlls in the folder and not in the GAC. We didn't use any installer; just 'published' the app along with the dependent Dlls into a folder and shared with QA - There shouldn't be big difference between installer and the 'publish' - the output is the same set of files.
But this did not help us; QA gets the error mentioned before. Please help.