Quick observation with Water

Hi Marc -

I haven’t played with Water much, but I like what I see. It loads instantaneously, CC is instantaneous, XAML loading is instantaneous (get the pattern here???).

As a WPF programmer, I obviously miss the integrated visual XAML designer, but I know that is a huge undertaking in itself.

I loaded one of my bigger WPF projects and simply hit Build, and everything built without any errors, so that I great. Please take a look at the attached screenshot. I did see some errors with CC when i’m dealing with Developer Express classes/components. As I said, it all compiled just fine, but there seems to be an issue w/ doing class completion with DevExpress for some reason.

I’ll keep testing things when time permits. Great job so far!

Alan

:thumbsup:

Yeah, we’ll have really solid CC for XAML, soon. An actual designer, we’re considering options but not for v1 :wink:

Can you fold open the References node? I’m betting the devex reference is not resolved (probably because EBuild, which we already use for that in the IDE, doesn’t check the right registry keys for that, yet).

you are correct sir. Water was unable to resolve a lot of references. Is this a known issue? Anything I can do, or wait for the next beta drop?

Nothing for now; i’ll try and get this fixed for the next beta.

Should be fixed for next Friday, but since i don’t have DevEx to test against specifically, i’d appreciate f you let me know of it works.

Hey Marc -

The DevExpress references are now being resolved perfectly, so that you - that issue is gone.

But, I did notice one other thing to bring to your attention.

I have a SLN file that contains roughly 50 projects, some small, some larger. When I start up Water, and first load this solution, it takes ~30 seconds to load the solution, resolve references, etc, before you can do anything. It sits there with each project saying ‘Waiting’. After ~30 seconds, the system seems to be parsing/resolving files and then all projects get loaded really fast, but there is that period of about 30 seconds where the system is in limbo.

IF I then close the solution and load it again, it loads right away properly. If I close Water, restart it, load this solution the issue is reproduced. So it only happens the first time the solution is loaded after Water starts.

Alan

Yeah, well. 50 projects will take a while for all references to load and and source files to be parsed. You can use Water while that;'s happening, the only thing you don’t get is CC. There’s really no way around this. (by contrast, VS just shows you a progress bar and the Ice is dead, while this happens).

I think you miss my point.

When I FIRST load the solution after water starts, that 30 secs has Water froze up and unable to do anything. The loading/parsing is fast once it starts, but for those 30 seconds you’re stuck looking at the wait cursor.

Again, if I close the solution and open again without restarting Water it loads the solution and parses right away. First time after a restart, you are stuck waiting.

Hmm, curious. any chance you can send me the solution in question (i’ll treat it super confidential)?

Barring that, can you do me a favor and attach the Visual Studio debugger to Water; then when it hangs during those 30s, can you Pause from VS and see if you can get a call stack for the main thread? i wonder what it’s doing…

(the two main slowing factors in project load, in all my profiling, are (a) processing the XML files and (b) where applicable, calculating al the right nesting of files for the tree. But even that’s in the .1s range for the largest solutions i test with (Fire and Water.sln <g>), and more importantly, that would hit again after close/reload. Strange.

I was able to attach to it, pause it, and choose ‘Debug|Windows\Call Stack’, but all it shows is ‘[External Code]’

Am I doing this wrong?

Disable “Just my Code” in VS debugging options

does this tell you anything???

 	[Managed to Native Transition]	
>	WindowsBase.dll!MS.Win32.UnsafeNativeMethods.WaitForMultipleObjectsEx(int nCount, System.IntPtr[] pHandles, bool bWaitAll, int dwMilliseconds, bool bAlertable)	Unknown
 	WindowsBase.dll!System.Windows.Threading.DispatcherSynchronizationContext.Wait(System.IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout)	Unknown
 	mscorlib.dll!System.Threading.SynchronizationContext.InvokeWaitMethodHelper(System.Threading.SynchronizationContext syncContext, System.IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout)	Unknown
 	[Native to Managed Transition]	
 	[Managed to Native Transition]	
 	mscorlib.dll!System.Threading.WaitHandle.InternalWaitOne(System.Runtime.InteropServices.SafeHandle waitableSafeHandle, long millisecondsTimeout, bool hasThreadAffinity, bool exitContext)	Unknown
 	mscorlib.dll!System.Threading.WaitHandle.WaitOne(int millisecondsTimeout, bool exitContext)	Unknown
 	System.dll!System.Net.FileWebRequest.GetResponse()	Unknown
 	PresentationCore.dll!MS.Internal.WpfWebRequestHelper.GetResponse(System.Net.WebRequest request = {System.Net.FileWebRequest})	Unknown
 	PresentationCore.dll!System.Windows.Media.ColorContext.Initialize(System.Uri profileUri = {System.Uri}, bool isStandardProfileUriNotFromUser = true)	Unknown
 	PresentationCore.dll!System.Windows.Media.ColorContext.ColorContext(System.Windows.Media.PixelFormat pixelFormat)	Unknown
 	PresentationCore.dll!System.Windows.Media.Imaging.BitmapImage.FinalizeCreation()	Unknown
 	PresentationCore.dll!System.Windows.Media.Imaging.BitmapImage.EndInit()	Unknown
 	PresentationCore.dll!System.Windows.Media.Imaging.BitmapImage.BitmapImage(System.Uri uriSource, System.Net.Cache.RequestCachePolicy uriCachePolicy)	Unknown
 	PresentationCore.dll!System.Windows.Media.Imaging.BitmapImage.BitmapImage(System.Uri uriSource)	Unknown
 	RemObjects.Water.BaseLibrary.dll!RemObjects.Fire.BaseLibrary.Image.platformImage.get()	Unknown
 	RemObjects.Water.ProjectSystem.dll!RemObjects.Fire.ProjectSystem.Node.imageSource.get()	Unknown
 	[Native to Managed Transition]	
 	[Managed to Native Transition]	
 	PresentationFramework.dll!MS.Internal.Data.PropertyPathWorker.GetValue(object item = {RemObjects.Fire.ProjectSystem.ElementsProject}, int level = 0)	Unknown
 	PresentationFramework.dll!MS.Internal.Data.PropertyPathWorker.RawValue(int k = 0)	Unknown
 	PresentationFramework.dll!MS.Internal.Data.PropertyPathWorker.RawValue()	Unknown
 	PresentationFramework.dll!MS.Internal.Data.ClrBindingWorker.ReplaceDependencySources()	Unknown
 	PresentationFramework.dll!MS.Internal.Data.ClrBindingWorker.NewValueAvailable(bool dependencySourcesChanged, bool initialValue = true, bool isASubPropertyChange = false)	Unknown
 	PresentationFramework.dll!MS.Internal.Data.PropertyPathWorker.UpdateSourceValueState(int k, System.ComponentModel.ICollectionView collectionView, object newValue, bool isASubPropertyChange)	Unknown
 	PresentationFramework.dll!MS.Internal.Data.ClrBindingWorker.AttachDataItem()	Unknown
 	PresentationFramework.dll!System.Windows.Data.BindingExpression.Activate(object item)	Unknown
 	PresentationFramework.dll!System.Windows.Data.BindingExpression.AttachToContext(System.Windows.Data.BindingExpression.AttachAttempt attempt)	Unknown
 	PresentationFramework.dll!System.Windows.Data.BindingExpression.AttachOverride(System.Windows.DependencyObject target = {System.Windows.Controls.Image}, System.Windows.DependencyProperty dp)	Unknown
 	PresentationFramework.dll!System.Windows.Data.BindingExpressionBase.OnAttach(System.Windows.DependencyObject d, System.Windows.DependencyProperty dp)	Unknown
 	PresentationFramework.dll!System.Windows.StyleHelper.GetInstanceValue(System.Windows.UncommonField<System.Collections.Specialized.HybridDictionary[]> dataField, System.Windows.DependencyObject container, System.Windows.FrameworkElement feChild = {System.Windows.Controls.Image}, System.Windows.FrameworkContentElement fceChild = null, int childIndex, System.Windows.DependencyProperty dp = {System.Windows.DependencyProperty}, int i, ref System.Windows.EffectiveValueEntry entry = {System.Windows.EffectiveValueEntry})	Unknown
 	PresentationFramework.dll!System.Windows.StyleHelper.GetChildValueHelper(System.Windows.UncommonField<System.Collections.Specialized.HybridDictionary[]> dataField = {System.Windows.UncommonField<System.Collections.Specialized.HybridDictionary[]>}, ref MS.Utility.ItemStructList<System.Windows.ChildValueLookup> valueLookupList, System.Windows.DependencyProperty dp = {System.Windows.DependencyProperty}, System.Windows.DependencyObject container = {System.Windows.Controls.ContentPresenter}, MS.Internal.FrameworkObject child, int childIndex = 6, bool styleLookup, ref System.Windows.EffectiveValueEntry entry = {System.Windows.EffectiveValueEntry}, out System.Windows.ValueLookupType sourceType = Simple, System.Windows.FrameworkElementFactory templateRoot = null)	Unknown
 	PresentationFramework.dll!System.Windows.StyleHelper.GetChildValue(System.Windows.UncommonField<System.Collections.Specialized.HybridDictionary[]> dataField, System.Windows.DependencyObject container, int childIndex, MS.Internal.FrameworkObject child, System.Windows.DependencyProperty dp, ref MS.Utility.FrugalStructList<System.Windows.ChildRecord> childRecordFromChildIndex, ref System.Windows.EffectiveValueEntry entry, out System.Windows.ValueLookupType sourceType, System.Windows.FrameworkElementFactory templateRoot)	Unknown
 	PresentationFramework.dll!System.Windows.StyleHelper.GetValueFromTemplatedParent(System.Windows.DependencyObject container = {System.Windows.Controls.ContentPresenter}, int childIndex = 6, MS.Internal.FrameworkObject child, System.Windows.DependencyProperty dp = {System.Windows.DependencyProperty}, ref MS.Utility.FrugalStructList<System.Windows.ChildRecord> childRecordFromChildIndex, System.Windows.FrameworkElementFactory templateRoot, ref System.Windows.EffectiveValueEntry entry = {System.Windows.EffectiveValueEntry})	Unknown
 	PresentationFramework.dll!System.Windows.StyleHelper.ApplyTemplatedParentValue(System.Windows.DependencyObject container, MS.Internal.FrameworkObject child, int childIndex, ref MS.Utility.FrugalStructList<System.Windows.ChildRecord> childRecordFromChildIndex, System.Windows.DependencyProperty dp = {System.Windows.DependencyProperty}, System.Windows.FrameworkElementFactory templateRoot)	Unknown
 	PresentationFramework.dll!System.Windows.StyleHelper.InvalidatePropertiesOnTemplateNode(System.Windows.DependencyObject container = {System.Windows.Controls.ContentPresenter}, MS.Internal.FrameworkObject child, int childIndex = 6, ref MS.Utility.FrugalStructList<System.Windows.ChildRecord> childRecordFromChildIndex, bool isDetach = false, System.Windows.FrameworkElementFactory templateRoot = null)	Unknown
 	PresentationFramework.dll!System.Windows.FrameworkTemplate.InvalidatePropertiesOnTemplate(System.Windows.DependencyObject container, object currentObject)	Unknown
 	PresentationFramework.dll!System.Windows.FrameworkTemplate.HandleBeforeProperties(object createdObject, ref System.Windows.DependencyObject rootObject, System.Windows.DependencyObject container, System.Windows.FrameworkElement feContainer, System.Windows.Markup.INameScope nameScope)	Unknown
 	PresentationFramework.dll!System.Windows.FrameworkTemplate.LoadOptimizedTemplateContent.AnonymousMethod__2(object sender, System.Xaml.XamlObjectEventArgs args)	Unknown
 	System.Xaml.dll!System.Xaml.XamlObjectWriter.OnBeforeProperties(object value)	Unknown
 	System.Xaml.dll!System.Xaml.XamlObjectWriter.Logic_CreateAndAssignToParentStart(MS.Internal.Xaml.Context.ObjectWriterContext ctx = {MS.Internal.Xaml.Context.ObjectWriterContext})	Unknown
 	System.Xaml.dll!System.Xaml.XamlObjectWriter.WriteEndObject()	Unknown
 	System.Xaml.dll!System.Xaml.XamlWriter.WriteNode(System.Xaml.XamlReader reader)	Unknown
 	PresentationFramework.dll!System.Windows.FrameworkTemplate.LoadTemplateXaml(System.Xaml.XamlReader templateReader = {System.Xaml.ReaderMultiIndexDelegate}, System.Xaml.XamlObjectWriter currentWriter = {System.Xaml.XamlObjectWriter})	Unknown
 	PresentationFramework.dll!System.Windows.FrameworkTemplate.LoadTemplateXaml(System.Xaml.XamlObjectWriter objectWriter)	Unknown
 	PresentationFramework.dll!System.Windows.FrameworkTemplate.LoadOptimizedTemplateContent(System.Windows.DependencyObject container, System.Windows.Markup.IComponentConnector componentConnector, System.Windows.Markup.IStyleConnector styleConnector, System.Collections.Generic.List<System.Windows.DependencyObject> affectedChildren, System.Windows.UncommonField<System.Collections.Hashtable> templatedNonFeChildrenField)	Unknown
 	PresentationFramework.dll!System.Windows.FrameworkTemplate.LoadContent(System.Windows.DependencyObject container, System.Collections.Generic.List<System.Windows.DependencyObject> affectedChildren)	Unknown
 	PresentationFramework.dll!System.Windows.StyleHelper.ApplyTemplateContent(System.Windows.UncommonField<System.Collections.Specialized.HybridDictionary[]> dataField, System.Windows.DependencyObject container = {System.Windows.Controls.ContentPresenter}, System.Windows.FrameworkElementFactory templateRoot, int lastChildIndex, System.Collections.Specialized.HybridDictionary childIndexFromChildID, System.Windows.FrameworkTemplate frameworkTemplate)	Unknown
 	PresentationFramework.dll!System.Windows.FrameworkTemplate.ApplyTemplateContent(System.Windows.UncommonField<System.Collections.Specialized.HybridDictionary[]> templateDataField, System.Windows.FrameworkElement container = {System.Windows.Controls.ContentPresenter})	Unknown
 	PresentationFramework.dll!System.Windows.FrameworkElement.ApplyTemplate()	Unknown
 	PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize)	Unknown
 	PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize)	Unknown
 	PresentationFramework.dll!System.Windows.Controls.Grid.MeasureCell(int cell, bool forceInfinityV)	Unknown
 	PresentationFramework.dll!System.Windows.Controls.Grid.MeasureCellsGroup(int cellsHead, System.Windows.Size referenceSize, bool ignoreDesiredSizeU = false, bool forceInfinityV = false, out bool hasDesiredSizeUChanged = false)	Unknown
 	PresentationFramework.dll!System.Windows.Controls.Grid.MeasureCellsGroup(int cellsHead, System.Windows.Size referenceSize, bool ignoreDesiredSizeU, bool forceInfinityV)	Unknown
 	PresentationFramework.dll!System.Windows.Controls.Grid.MeasureOverride(System.Windows.Size constraint)	Unknown
 	PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize)	Unknown
 	PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize)	Unknown
 	PresentationFramework.dll!System.Windows.Controls.Border.MeasureOverride(System.Windows.Size constraint)	Unknown
 	PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize)	Unknown
 	PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize)	Unknown
 	PresentationFramework.dll!System.Windows.Controls.StackPanel.StackMeasureHelper(System.Windows.Controls.IStackMeasure measureElement = {System.Windows.Controls.StackPanel}, System.Windows.Controls.IStackMeasureScrollData scrollData = null, System.Windows.Size constraint)	Unknown
 	PresentationFramework.dll!System.Windows.Controls.StackPanel.MeasureOverride(System.Windows.Size constraint)	Unknown
 	PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize)	Unknown
 	PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize)	Unknown
 	PresentationFramework.dll!System.Windows.Controls.Control.MeasureOverride(System.Windows.Size constraint)	Unknown
 	PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize)	Unknown
 	PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize)	Unknown
 	PresentationFramework.dll!System.Windows.Controls.VirtualizingStackPanel.MeasureChild(ref System.Windows.Controls.Primitives.IItemContainerGenerator generator, ref System.Windows.Controls.Primitives.IContainItemStorage itemStorageProvider = {System.Windows.Controls.TreeView}, ref System.Windows.Controls.Primitives.IContainItemStorage parentItemStorageProvider = null, ref object parentItem = {System.Windows.Controls.VirtualizingStackPanel}, ref bool hasUniformOrAverageContainerSizeBeenSet = true, ref double computedUniformOrAverageContainerSize = 30, ref double computedUniformOrAverageContainerPixelSize = 30, ref bool computedAreContainersUniformlySized = true, ref System.Collections.IList items, ref object item = {RemObjects.Fire.ProjectSystem.ElementsProject}, ref System.Collections.IList children, ref int childIndex, ref bool visualOrderChanged, ref bool isHorizontal = false, ref System.Windows.Size childConstraint, ref System.Windows.Rect viewport, ref System.Windows.Controls.VirtualizationCacheLength cacheSize, ref System.Windows.Controls.VirtualizationCacheLengthUnit cacheUnit, ref bool foundFirstItemInViewport = true, ref double firstItemInViewportOffset, ref System.Windows.Size stackPixelSize = {System.Windows.Size}, ref System.Windows.Size stackPixelSizeInViewport = {System.Windows.Size}, ref System.Windows.Size stackPixelSizeInCacheBeforeViewport = {System.Windows.Size}, ref System.Windows.Size stackPixelSizeInCacheAfterViewport = {System.Windows.Size}, ref System.Windows.Size stackLogicalSize = {System.Windows.Size}, ref System.Windows.Size stackLogicalSizeInViewport = {System.Windows.Size}, ref System.Windows.Size stackLogicalSizeInCacheBeforeViewport = {System.Windows.Size}, ref System.Windows.Size stackLogicalSizeInCacheAfterViewport = {System.Windows.Size}, ref bool mustDisableVirtualization = false, bool isBeforeFirstItem = false, bool isAfterFirstItem, bool isAfterLastItem = true, bool skipActualMeasure, bool skipGeneration, ref bool hasBringIntoViewContainerBeenMeasured, ref bool hasVirtualizingChildren = true)	Unknown
 	PresentationFramework.dll!System.Windows.Controls.VirtualizingStackPanel.MeasureOverrideImpl(System.Windows.Size constraint, ref double? lastPageSafeOffset = null, ref System.Collections.Generic.List<double> previouslyMeasuredOffsets = null, ref double? lastPagePixelSize = null, bool remeasure = false)	Unknown
 	PresentationFramework.dll!System.Windows.Controls.VirtualizingStackPanel.MeasureOverride(System.Windows.Size constraint)	Unknown
 	PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize)	Unknown
 	PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize)	Unknown
 	PresentationCore.dll!System.Windows.ContextLayoutManager.UpdateLayout()	Unknown
 	PresentationCore.dll!System.Windows.UIElement.UpdateLayout()	Unknown
 	PresentationFramework.dll!System.Windows.Controls.VirtualizingStackPanel.InitializeViewport.AnonymousMethod__0()	Unknown
 	WindowsBase.dll!System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate callback, object args, int numArgs)	Unknown
 	WindowsBase.dll!System.Windows.Threading.ExceptionWrapper.TryCatchWhen(object source = {System.Windows.Threading.Dispatcher}, System.Delegate callback, object args, int numArgs, System.Delegate catchHandler = null)	Unknown
 	WindowsBase.dll!System.Windows.Threading.DispatcherOperation.InvokeImpl()	Unknown
 	WindowsBase.dll!System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(object state)	Unknown
 	mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)	Unknown
 	mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)	Unknown
 	mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)	Unknown
 	WindowsBase.dll!MS.Internal.CulturePreservingExecutionContext.Run(MS.Internal.CulturePreservingExecutionContext executionContext, System.Threading.ContextCallback callback, object state)	Unknown
 	WindowsBase.dll!System.Windows.Threading.DispatcherOperation.Invoke()	Unknown
 	WindowsBase.dll!System.Windows.Threading.Dispatcher.ProcessQueue()	Unknown
 	WindowsBase.dll!System.Windows.Threading.Dispatcher.WndProcHook(System.IntPtr hwnd, int msg, System.IntPtr wParam, System.IntPtr lParam, ref bool handled)	Unknown
 	WindowsBase.dll!MS.Win32.HwndWrapper.WndProc(System.IntPtr hwnd = {System.IntPtr}, int msg = 49447, System.IntPtr wParam = {System.IntPtr}, System.IntPtr lParam = {System.IntPtr}, ref bool handled = false)	Unknown
 	WindowsBase.dll!MS.Win32.HwndSubclass.DispatcherCallbackOperation(object o)	Unknown
 	WindowsBase.dll!System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate callback, object args, int numArgs)	Unknown
 	WindowsBase.dll!System.Windows.Threading.ExceptionWrapper.TryCatchWhen(object source = {System.Windows.Threading.Dispatcher}, System.Delegate callback, object args, int numArgs, System.Delegate catchHandler = null)	Unknown
 	WindowsBase.dll!System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority priority, System.TimeSpan timeout, System.Delegate method, object args, int numArgs)	Unknown
 	WindowsBase.dll!MS.Win32.HwndSubclass.SubclassWndProc(System.IntPtr hwnd = {System.IntPtr}, int msg = 49447, System.IntPtr wParam = {System.IntPtr}, System.IntPtr lParam = {System.IntPtr})	Unknown
 	[Native to Managed Transition]	
 	[Managed to Native Transition]	
 	WindowsBase.dll!System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame frame = {System.Windows.Threading.DispatcherFrame})	Unknown
 	WindowsBase.dll!System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame frame)	Unknown
 	PresentationFramework.dll!System.Windows.Application.RunDispatcher(object ignore)	Unknown
 	PresentationFramework.dll!System.Windows.Application.RunInternal(System.Windows.Window window)	Unknown
 	PresentationFramework.dll!System.Windows.Application.Run(System.Windows.Window window)	Unknown
 	PresentationFramework.dll!System.Windows.Application.Run()	Unknown
 	Water.exe!WaterApp.App.Main()	Unknown

curious. it seems to be busy loading images.

is

RemObjects.Water.BaseLibrary.dll!RemObjects.Fire.BaseLibrary.Image.platformImage.get() Unknown

in th stack traces, no matter “when” in the 30s you pause? e.g., if you resume, wait 10s, pause again, still same? 'll review the caching logic here Wednesday (i’m out all day tomorrow), but if that’s the case then it seems that you have many many files in your SLN, and for each node in the project tree WPF (repeatedly) expends effort to load the right image to show for it (which should not happen as these should be cached/reused).

thanx for the details; i think this should be actionable and trivial to fix, if that is indeed the problem.

Thanks, logged as bugs://78135

Again, remember, this only happens the first time it’s loaded after starting Water.

Odd, i see n obvious caching problem in RemObjects.Fire.BaseLibrary.Image.platformImage.get(). for tomorrows beta, i’ll add some extra logging. You’ll see stuff like

loading uncached image BuildLog.
loading uncached image Tab-Projects.
loading uncached image Tab-Types.
loading uncached image Tab-Search.
loading uncached image Tab-DebugSessions.
returning cached image Tab-Projects.
loading uncached image Action-Debug-Play-New.
returning cached image Action-Debug-Play-New.
loading uncached image Action-Debug-StepInto.
loading uncached image Action-Debug-StepOver.
loading uncached image Action-Debug-StepOut.
loading uncached image Tab-Debug-Log-Active.
loading uncached image Tab-Debug-Inspector.
loading uncached image Tab-Debug-LogCat.
loading uncached image Tab-Projects-Active.
loading uncached image Project-Island-Executable.
returning cached image Project-Island-Executable.
returning cached image Project-Island-Executable.
returning cached image Project-Island-Executable.
loading uncached image Tab-Debug-Log.
returning cached image Project-Island-Executable.
returning cached image Project-Island-Executable.
returning cached image Project-Island-Executable.
returning cached image Project-Island-Executable.
returning cached image Project-Island-Executable.
returning cached image Project-Island-Executable.
returning cached image Project-Island-Executable.
returning cached image Project-Island-Executable.

in %APPDATA%\Water.log

that said, can you check this part:

it might just have been a random hit and the real delay is elsewhere. How total files does the Solution have, roughly? 10 per project? 100?

bugs://78135 got closed with status nochangereq.