Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
 All Forums
 Visual Assist
 Technical Support
 Parsing whole solution very often

You must be registered to post a reply.
Click here to register.

Screensize:
UserName:
Password:
Format: BoldItalicizeUnderlineStrikethrough Align leftCenterAlign right Insert horizontal ruleUpload and insert imageInsert hyperlinkInsert email addressInsert codeInsert quoted textInsert listInsert Emoji
   
Message:

Forum code is on.
Html is off.

 
Check to subscribe to this topic.
   

T O P I C    R E V I E W
Pascal Mueller Posted - Jan 24 2019 : 03:57:02 AM
Hi,

I am experiencing a very bad performance of visual studio, because of visual assist parsing the whole project, quite often. Because it includes the Unreal Engine source code, parsing the solution takes 12-15 minutes. This happens almost every second day when I start my project for the first time. In these two days only a handful of files have changed, so a whole parsing of the project is not necessary. In general I am very happy with visual assist, but at the moment I am loosing 30-60 min every week because of this. Is there an option to not reparse the whole solution?? What can be done to solve this?

Cheers Pascal
30   L A T E S T    R E P L I E S    (Newest First)
feline Posted - Aug 31 2020 : 08:54:18 AM
Thank you for the update, I am glad that the junction is helping. This is a work around for now.

The basic problem is that Unreal Engine is complex / hard for VA to handle correctly. You can easily have several different versions of the Engine installed at the same time, in different locations. Since the engine is listed as part of the solution you are opening, its really not obvious that this is actually a stable external library and should be treated differently to the rest of your solution.

The more I look into this problem, the more strange edge cases I seem to encounter.
Spanky Posted - Aug 30 2020 : 09:18:12 AM
And to be clear, both the Unreal install and my projects still exist on my D drive. I can open my projects from their D drive path (once they are converted obviously). I only need to launch the Unreal Editor through the junction path (C drive) and not it's actual path (D drive).
Spanky Posted - Aug 30 2020 : 09:14:47 AM
I was also having this same problem and I can confirm that creating the junction does fix the issue for me.

I also do not have the launcher/engine installed on my C drive. I have it installed in "D:\Code\Epic Games".

I created a new project here "D:\Code\Unreal Projects\MPTesting". When I open this, VAX will end up parsing all of Unreal again which takes a while (I have created multiple projects at this point). Also checking my 'System include directories' in VAX didn't list the Unreal directories.

I created the junction and opened the vcxproj and vcxproj.filters files (on my D drive) and updataed the directories in both of those to point to the path through the C drive junction. I cleared the VAX database and reopened the project in Visual Studio. Unfortunately this does not work as the Engine project (the Unreal engine code) within my project solution is still referencing the files on my D drive. I did however notice that the 'System include directories' now does list all of the Unreal directories properly.

I then launched the UE4Editor.exe from the junctioned path (C:\Program Files\Epic Games\UE_4.25_source\Engine\Binaries\Win64\UE4Editor.exe) instead of from my D drive (D:\Code\Unreal Engine\UE_4.25\Engine\Binaries\Win64\UE4Editor.exe). I told Unreal to open the same project (D:\Code\Unreal Projects\MPTesting) and this time it informed me that the project was generated with a different version of the engine. I guess it matches the path somehow. I ended up converting the project in place (people should create a backup somehow or do the conversion to copy option here as this process may fail and render your project broken).

After a bit, the project opened in Unreal properly. I then clicked on File->Open Visual Studio from within Unreal. It then began parsing all the system includes and I could see it scanning the Unreal files on the C drive now. The Engine project is also referncing files on the C drive rather than the D drive. The Unreal symbols are now in italics

I then created another project (still launching Unreal from the junction on C) and opened it in Visual Studio. After a noticably longer 'Loading system symbols' process, it quickly parsed my project files (1 or 2 seconds) and all highlighting was then working properly with Unreal symbols now in italics. It did not parse any of the Unreal files again. As long as I launch everything from the junction path rather than where the files are actually stored, things work properly and it does not reparse Unreal every time. I would have to convert over any existing projects to use the new path which may or may not be viable for some people.
feline Posted - Jun 25 2020 : 05:19:37 AM
I am basically doing the same thing here... so why the difference?

If you just load your solution, as shown in the screen shot above, and then wait a few moments before running the UE editor, does VA start doing a full parse of Unreal Engine? Or does VA notice that nothing has changed, so there is no need to do a reparse?

I am trying to work out if something seems to be triggering the extra parsing.

Do you work with more than one instance of Visual Studio open at once, or just the one instance?
Jorge24 Posted - Jun 24 2020 : 6:42:12 PM
quote:
Originally posted by feline

When you load your solution in Visual Studio, how are you doing so?

Do you first load Visual Studio, then open the Unreal solution you are working on?
Do you launch the Unreal Editor first and open the solution from here?



I launch Visual Studio and then I click on one of my pinned solutions. Then I click the green arrow to run the UE editor.





Jorge24 Posted - Jun 24 2020 : 6:38:44 PM
Thanks for continuing to test this. I'm having a hard time understanding the process you followed on your end. Did you say that the entire source-compiled UE must be parsed at least once for each project that references it? or that dosnt happen to you?

So, if you create 10 new UE blank project from the source compiled UE editor, will it parse the entire engine again for each project? and if so, does that only happen with the source compiled one for you or also with the Epic Launcher version?
feline Posted - Jun 24 2020 : 12:31:21 PM
I have found a situation where VA re-parses the entire Unreal Engine directory tree for the github version of Unreal Engine, but for me this is only happening after using the github source code compiled version of the Unreal Editor to create a new game.

When I do this, instead of loading the Unreal Editor with the game project, as expected, instead I am launched directly into VS2019 with the C++ solution source code loaded. At this point VA does a full parse of the Unreal Engine tree.

However if I then close the IDE, and Unreal Editor, and either load a new instance of Visual Studio, or of Unreal Editor, and then load one of these github source editor produced game solutions, there is no extra parsing at all.

I am only working with one instance of the IDE open at a time, since VA is designed to maintain a separate symbol database for each separate instance of Visual Studio that is used, so this would require a full reparsing of Unreal Engine for each new instance and symbol database that has never before parsed Unreal Engine.

How does this compare with your experience? Obviously you are seeing something different, so how should I change my tests to try and reproduce what you are doing and seeing?
feline Posted - Jun 24 2020 : 11:49:48 AM
When you load your solution in Visual Studio, how are you doing so?

Do you first load Visual Studio, then open the Unreal solution you are working on?
Do you launch the Unreal Editor first and open the solution from here?

It is starting to look like how the IDE is loaded is somehow a factor here.
feline Posted - Jun 22 2020 : 05:40:37 AM
Thank you for the information. I have the correct IDE settings, but I do have different debugger settings. I am building with VS2017, as you say, I probably should have remembered to mention that

I found the "UE4Editor.exe" file myself, and just ran this directly, which does load. But I was caught out by it building all of the shaders while loading, which looked exactly like it had hung and was not working. I will start running tests on what is happening here soon.
Jorge24 Posted - Jun 19 2020 : 11:38:12 PM
quote:
Originally posted by feline

OK, this might be a silly question, but how do you download and compile the Unreal Engine source code from GitHub?



Hmm, my first question would be: What version of Visual Studio are you running? I have read posts before where updating visual studio fixes things. I'm using VS 2019 v16.6. Note that updating VS will probably mean you will have to recompile the entire engine again so try updating VS if all the stuff below fails.

Also, which branch did you check out from the UE GitHub repo? Are you on the release branch that I linked in the previous post which has UE 4.25.1?

These are my UE4 project properties:


Is your build configuration set like this too?



Lastly, if it did build successfully but you just can't run the UE editor through Visual Studio, you can just run the editor's EXE manually by going to:
"\UnrealEngine\Engine\Binaries\Win64\UE4Editor.exe"
Jorge24 Posted - Jun 19 2020 : 11:20:56 PM
Hi, thanks again for replying and sorry it's been a few days.
quote:
Originally posted by feline
For your two solutions using the source code compiled from GitHub, are you using the same source tree and location for both? Have you updated the Unreal Engine source code in the last couple of days?


Yes, I have only had 1 repo of the UE at a time. The first time I tried using VA, I had the release branch of UE which at that time was at 4.25.0. Now I have the release branch which is at 4.25.1. I have tried creating new projects while I had 4.25.0 and also with 4.25.1 but both lead to the same re-parsing.

The version I have now is:
https://github.com/EpicGames/UnrealEngine/tree/4.25.1-release
feline Posted - Jun 17 2020 : 11:46:16 AM
OK, this might be a silly question, but how do you download and compile the Unreal Engine source code from GitHub?

Following the steps on this page:

https://docs.unrealengine.com/en-US/GettingStarted/DownloadingUnrealEngine/index.html

I have the GitHub download done, all nice and straight forward.

Then I have followed the steps on this page:

https://docs.unrealengine.com/en-US/GettingStarted/DownloadingUnrealEngine/index.html

first running "Setup.bat" and then "GenerateProjectFiles.bat"

Now load VS2017, open the UE4 solution, and build the UE4 project node. It compiled without any errors. I have set the start up project, several times over.

When I try to run the solution, I get the error message:

Unable to start debugging. Check your debugger settings by
opening project properties and navigating to 'Configuration
Properties-->Debugging'

which isn't all that helpful. I have tried several searches, unsuccessfully, for help on this. The nearest solution was to set the startup project, which I have already done.

Better pictures here, so I am sure I am doing this right:

https://docs.unrealengine.com/en-US/Programming/Development/BuildingUnrealEngine/index.html

When I check the debugging settings, there are only two settings obviously set:

Command = $(TargetPath)
Amp Default Accelerator = WARP software accelerator

the rest are blank. Nothing obviously wrong or invalid here.

And yes, I have even tried a reboot, just in case
feline Posted - Jun 15 2020 : 08:34:30 AM
At least the behaviour with the Epic Launcher version is what I would expect.

For your two solutions using the source code compiled from GitHub, are you using the same source tree and location for both? Have you updated the Unreal Engine source code in the last couple of days?

I will set up a similar test here, and see what I see.

If you want to try telling VA that your source code version of Unreal Engine lives in a different directory, without actually moving any of your files, you can try the following. Open a command prompt in the directory:

C:\Program Files\Epic Games
and a command like:

mklink /J UE_4.25_source "C:\repos\UnrealEngine"

this will create a junction point at the file system level, making the directory tree appear to be in both locations at the same time. Now go into the director that holds your source code based solution. From here you should find the following files:

Intermediate\ProjectFiles\UE4.vcxproj
Intermediate\ProjectFiles\UE4.vcxproj.filters

Open both files in a text editor, and do a search and replace for the old Unreal Engine path to the new Unreal Engine path, so in this case search

"C:\repos\UnrealEngine"

And turn all instances into:

"C:\Program Files\Epic Games\UE_4.25_source\"

Save the changes and now reload the IDE and your solution.
Jorge24 Posted - Jun 14 2020 : 01:51:44 AM
I just created 2 new blank projects. The project I created with the UE from the Epic Launcher didn't have to re-parse. It just loaded the symbols and that was it. However, the new project I created with the UE I compiled from source, spent like 21 minutes parsing the entire UE source code. I have a very good desktop CPU (it's an Intel i7-9700K) and it was running at 100% throughout those 21 minutes. Prior to this test, VA had already parsed the entire engine for both versions, the Epic Launcher one, and the one I compiled from source. I only had 1 instance of Visual Studio open at a time during the tests. Both engines are version 4.25.1.

It seems like all the problems I've had only happen in the version I compiled from source.
Jorge24 Posted - Jun 13 2020 : 1:12:46 PM
The path of the UE from the Epic Launcher (right side of screenshot) is installed to:
C:\Program Files\UE_4.25

The version I compiled from source code (left side of screenshot) is installed to:
C:\repos\UnrealEngine

Should I move my UE repository to something like:
C:\Program Files\UE_4.25_source
feline Posted - Jun 13 2020 : 07:00:58 AM
What is the path to the two versions of Unreal Engine in these screen shots? I am guessing that the Epic Launcher version is installed to something like:

C:\Program Files\Epic Games\UE_4.24
while the version compiled from source code is installed to a quite different base directory, outside of "C:\Program Files\"

One factor that VA considers when working out if symbols should be in italic is the location of the stable include libraries.

Things are more complex when it comes to Unreal Engine, but the directory does have some effect.
Jorge24 Posted - Jun 12 2020 : 7:02:56 PM
I will be creating a new UE project tomorrow to test the parsing time of a new project that references UE source files that have been previously parsed. I will try both, creating a new project that uses the precompiled source files and one that uses the source-compiled files.

However, I just installed the precompiled version of UE from the Epic Launcher and confirmed that the problem detecting symbols only happens in my source-compiled version. As you can see, in the screenshot below, SubsurfaceProfile shows in italics on the right side (precompiled version) but not in the left side (source-compiled version).





and a comparison of UnrealString.h:




feline Posted - Jun 08 2020 : 11:22:07 AM
Now I have applied your colours I am getting a very similar result here. The only obvious difference, apart from the italic, is "meta". For me this is being coloured as an enum member, while it is shown as white for you.

Have you had a chance to see if you are still getting very slow parsing problems? This is the most important problem here to focus on.
Jorge24 Posted - Jun 03 2020 : 12:23:14 PM
Also, since enabling or disabling IDE intellisense didn't affect the italics, I ended up re-enabling it because without it Visual Assist doesn't underline errors such as passing the wrong type of argument to a function.
Jorge24 Posted - Jun 03 2020 : 12:11:07 PM
I forgot to mention, the classes that show up in italic actually started showing up in italics about a day before I turned off the IDE intellisense. About 2 days ago, the italics for classes like FString USubsurfaceProfile were showing permanently. However, for some reason, now the italics for FString only show up for a few seconds after Visual Studio loads, then the italics are gone.

I think what made the italics start to show is that I added the folder "C:\repos\UnrealEngine\Engine\Source" to "C/C++ Directories > Custom". It seems like after I added that directory to custom, then it caused VA to add some directories to "Project Defined" automatically. After I removed the folder from "Custome" now the folders in Project Defined do not include the folders in "C:\repos\UnrealEngine\Engine\Source". The only folders there now are the ones in "C:\repos\UnrealEngine\Engine\Intermediate". Without adding folders to custom I dont get any italics. After adding the folder to custom I get italics for USubsurfaceProfile permanently but only temporary italics for FString.

I'm using Visual Studio's dark theme but I also customized a few of the VS colors like I made the background darker and my "#include" pink, etc.

I am also using custom coloring settings for Visual Assist as you can see here:


I also get a list of 4 possible destinations to jump to when I press Alt-G over SubsurfaceProfile but nothing if I hover over it.

feline Posted - Jun 03 2020 : 08:28:18 AM
Thank you for the directory listing. On a quick look this looks correct, and it is the right sort of size of directory listing. Basically VA should be doing a recursive scan of your Unreal Engine directory tree, and adding every directory it finds to this directory list.

I am confused that turning off IDE intellisense caused symbols to start appearing in italic for you. The italic setting comes from VA, so is independent of the IDE intellisense parser.

Are you using the default IDE dark theme, with the default VA colours for a dark theme? Or have you customised your colour settings? As it stands its not obvious why some symbols have one colour for you, but a different colour for me, especially when I am using a different theme

For mouse hover over the parameters to the UCLASS macro, this is correct, we are not trying to show any tooltips here. Should we be doing so? I don't actually use Unreal Engine myself, so I don't always know what you would want / hope to happen.

If you use Alt-G on the UCLASS parameter "SubsurfaceProfile" on line 130, what happens? For me I get a list of 4 possible destinations to jump to.

If I use Alt-Shift-G instead, and select to go to the declaration, I am taken to the block:

/** From the GBufferD RGB Channels. */
UPROPERTY(VisibleAnywhere, category = GBufferD)
FVector SubsurfaceProfile;

in the file "PixelInspectorView.h".

The fact that you have different behaviour for italic symbols may be related to the fact that Unreal Engine is not located under "C:\Program Files\Epic Games\", but you have some Unreal Engine symbols in italic, so I am not sure yet what is happening here.
Jorge24 Posted - Jun 02 2020 : 12:34:36 PM
I see, I will be creating a new UE project in the next few days and will note how long it takes to parse to see how does my experiences compare.

I disabled the intellisense from the VS IDE and now it looks like this:


The squiggly lines are gone. I also noticed some of my classes now show in italics but "SubsurfaceProfile" in line 130 still doesn't show in italics and when I hover over it, nothing pops up. Is something supposed to pop up when I hover over SubsurfaceProfile?

I'm wondering if maybe I'm missing some directories in:
VA Settings > C/C++ Directories

I pasted the list of directories here in case you could spot something I didn't:
https://pastebin.com/05Zmvc8P
feline Posted - Jun 02 2020 : 11:04:15 AM
As for your picture, with VS2017, VA 2375 and Unreal Engine 4.24, I am seeing the following:



several differences here, including that I have italic and you don't. Clearly something to look into here.
feline Posted - Jun 02 2020 : 10:25:57 AM
You understand what happens with 3 instances of the IDE open at once correctly. This is by design, to stop the instances of the IDE pulling in symbols from another instance. But this should not cause VA to re-parse the Unreal Engine source code.

I have just run the following test. Using VS2017 and VA 2375.0, I set up two simple Unreal Engine projects, both using UE version 4.24.

I loaded VS2017, and told VA to do a symbol database rebuild. This was to make sure I started with a known, blank state.

Close the IDE and load a single instance of VS2017, and load the first UE project. VA took under 8 minutes to parse everything, which was mainly Unreal Engine its self, since it is a new, and very small game project.

I then closed this single instance of VS2017, then loaded a new instance of VS2017, still only one instance loaded, and opened the second Unreal Engine project. This time parsing took under 30 seconds.

This version of Unreal Engine was downloaded via the Epic Games Launcher, but this should not really be relevant here, but it could be.

How does this compare to your experiences? It sounds like you are seeing something quite different.

Do you have IDE intellisense enabled or disabled? Normally VA does not underline symbols in the editor if the IDE intellisense is enabled, so I am wondering if this underlining is coming from VA or from the IDE. VA should not be underlining "UObject", especially not if it is being coloured correctly.

You can turn off the IDE intellisense parser via:

IDE tools menu -> Options -> Text Editor -> C/C++ -> Advanced -> Disable Database = True

and just rely on VA's parsing if you want. This should help to speed things up when working with Unreal Engine, but doesn't explain any extra parsing VA is doing.
Jorge24 Posted - May 31 2020 : 08:04:51 AM
And by the way, I opened the UE4 solution that contains the UE source code and VA has been parsing the entire repository again. I think this is like the 3rd time it does it. I'm pretty sure it finished last time it was parsing since I left visual studio open for several hours even after VA finished parsing. I havent modified any of the files in the UE source code since the last time VA parsed the whole thing.

If I have 3 instances of visual studio open at the same time, each with a UE project loaded, it will parse the entire UE source code 3 times right?

But after doing that, I should be able to open 3 instances of Visual Studio, load any UE project on each of the 3 instances, and not have to reparse the entire UE source code again, right?
Jorge24 Posted - May 31 2020 : 06:19:15 AM
I see. The suggestions inside the UE4 macros work but the Enhanced Syntax Coloring doesn't seem to be working. I opened the file "UnrealEngine\Engine\Source\Runtime\Engine\Classes\Engine\SubsurfaceProfile.h" and went to line 130 as you can see here:



In the VA settigns, only my "Variables" color is set to white
feline Posted - May 30 2020 : 08:34:16 AM
Sometimes the Unreal Engine symbols are not shown in italics, even with Unreal Engine support active. I am currently looking into this.

Are other VA features for Unreal Engine working correctly for you? These are described here:

https://docs.wholetomato.com/default.asp?W812
Jorge24 Posted - May 29 2020 : 08:17:29 AM
quote:
Firstly, you should only need to set VerifyDbOnLoad if your IDE is crashing, is this something you are seeing?


I'm not crashing but setting that registry key to 00 seems to have stopped VA from reparsing when reopening a solution.

quote:
are all of your Unreal Engine directories listed here as stable include directories?

There's several hundred directories that start with "C:\repos\UnrealEngine\Engine" that were added there automatically so I think that is working.

quote:
can you please look and see if you have:
VA Options -> Unreal Engine -> Enable support for Unreal Engine 4


I have mine enabled support for UE4 and set to "When a solution contains a project named UE4"
feline Posted - May 29 2020 : 07:47:41 AM
Firstly, you should only need to set VerifyDbOnLoad if your IDE is crashing, is this something you are seeing? If so, it would be good to try and get to the bottom of the crash, in case VA has any part in it.

I am not sure of the exact effect of this setting, but I would expect VA to still re-parse any files that it realises have been modified since they were last parsed.

For your Unreal symbols, if you look in:

VA Options -> C/C++ Directories

are all of your Unreal Engine directories listed here as stable include directories?

If not, can you please look and see if you have:

VA Options -> Unreal Engine -> Enable support for Unreal Engine 4
When a solution contains a project named UE4
Always

turned On or Off, and if it is turned On, check what it is set to?
Jorge24 Posted - May 29 2020 : 07:40:37 AM
quote:
Originally posted by feline

can you please close all instances of the IDE and set this registry key:
https://docs.wholetomato.com/default.asp?W651



If I set VerifyDbOnLoad to 00, does that mean that VA will not re-parse files that have been modified outside Visual Studio when opening a solution?

Or it will still re-parse as long as "parse all files when opening a project" is enabled?

By the way, for some reason none of the Unreal Engine symbols show in italics for me such as GENERATED_BODY(), UCLASS, and UOBJECT.

I'm using a source compiled version of Unreal Engine from their git release branch which is version 4.25.0.

© 2019 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000