We’ve recently upgraded our Infragistics .Net UltraWinGrid references to 8.2.3.5 from 8.1.2 and have started to see some very weird behaviors in terms of layout loading.
Our grid is bound to an interface and we save our infragistics layouts as serialized XML as the user's local layout.
On app start up, the grid then deserialise the XML node into a stream and the layout is loaded from that stream (using UltraGridLayout.LoadFromXml(...).
And here is where we start to have trouble – infragistics 8.2.3.5 appears to be reflecting all referenced classes (even if it is not loaded at the time of layout loading), instead of only the classes used in the layout. The result is that if any class is broken, infragistics UltraWinGrid will throw an exception and fail to load the layout. This worked perfectly well with 8.1.2.
By “broken” I meant below (reasons we have already discovered, and there might be more - we use late binding for pretty much everything as we have a customised environment which requires run time assebmly resolving)
- the assembly cannot be loaded,
- the class is not implementing an interface properly this happens quite a lot in our late binding model: e.g. class C implement interface I, interface I got updated to include a new method M but C hasn’t been upgraded. This works well with late binding as long as M is not called (which I’d consider to be reasonable) but infragistics here won’t be happy with that.
Since pretty much everything in our .net world is late binding this can be quite dangerous in terms of future maintenance.
I’m just wondering if anyone else had seen similar problems? 8.1.2, on the othe rhand is not having this issue. Has something changed in between?
Thanks for your help!
That being said, has Infragistics got any plans to investigate and think what went wrong in this process?
A .net assemblie should be able to cope with multiple versions and side-by-side loading.
Furthermore, the problem is very consistent in the sense that it causes loadlayout errors - don't you think that it tells us something about specific bugs in Infragistics code, Mike?
I'd say we're on the same boat on this issue - there's a bug Infragistics has to fix to make the customers happy, and there's also best-practice guides that the end-users need to follow.
As customers, we would expect it to just work. It wouldn't be acceptable if Microsoft says Word 2007 and Word 2003 cannot run at the same time - and we see this layout loading issue in the same way.
These are issues that users won't expect to see in robust commercial datagrids.
Having multiple versions of the Infragistics assemblies (or any assemblies) loaded into memory will certainly cause a wide range of problems.
Back onto this - I've managed to solve (or work around) the issue eventually after sufferring from it for like half a year.
My advice would be, try to make sure that you only have 1 copy of the Infragistics assemblies loaded in memory at run time - e.g. if you have both Winforms 8.2.3.5, 8.1, 7.1, 3.1 that would definitely be asking for trouble.
I've managed to reduce our applications referenced assemblies to 8.2.3.5 only and the exceptions went away.
Take a look at your loaded assemblies at run time and remove or upgrade the ones that you don't need.
This applies to the WPF version as well but it does look like that you can have 1 wpf and 1 winforms at the same time, probably as their full names are different.
good luck.
hi, i have some similar problem.
Problem A: I save the layout with ultragrid version 8.2. When i load this layout with ultragrid 9.1 i have also this exceptions!
Problem B: The methode [ultragrid.load()] works much faster in the version 8.2 then in the version 9.1.
Any response to this issue?
I have posted on another discussion, but I am seeing this issue from upgrading 8.2 to 9.1, and seeing on both developer and user's machine.
Very urgent..need help!!!!