Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
User name:
Password:
Save Password
Forgot your password?

 All Forums
 Visual Assist
 Technical Support
 Parsing whole solution very often
 New Topic  Reply to Topic
 Printer Friendly
Previous Page
Author Previous Topic Topic Next Topic
Page: of 2

feline
Whole Tomato Software

United Kingdom
17027 Posts

Posted - Jun 24 2020 :  12:31:21 PM  Show Profile  Reply with Quote
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?

zen is the art of being at one with the two'ness
Go to Top of Page

Jorge24
Senior Member

USA
28 Posts

Posted - Jun 24 2020 :  6:38:44 PM  Show Profile  Reply with Quote
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?
Go to Top of Page

Jorge24
Senior Member

USA
28 Posts

Posted - Jun 24 2020 :  6:42:12 PM  Show Profile  Reply with Quote
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.





Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17027 Posts

Posted - Jun 25 2020 :  05:19:37 AM  Show Profile  Reply with Quote
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?

zen is the art of being at one with the two'ness
Go to Top of Page

Spanky
New Member

Canada
2 Posts

Posted - Aug 30 2020 :  09:14:47 AM  Show Profile  Reply with Quote
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.
Go to Top of Page

Spanky
New Member

Canada
2 Posts

Posted - Aug 30 2020 :  09:18:12 AM  Show Profile  Reply with Quote
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).
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17027 Posts

Posted - Aug 31 2020 :  08:54:18 AM  Show Profile  Reply with Quote
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.

zen is the art of being at one with the two'ness
Go to Top of Page

scottarius
Starting Member

USA
1 Posts

Posted - Nov 16 2020 :  2:08:07 PM  Show Profile  Reply with Quote
Is there any updates on this? I just recently bought VA for Unreal Dev and the constant re-parsing is killing me.

I'm using a source build of 4.25. All the ue4 features seem to work fine otherwise. Everything is on my C drive, so I don't think this junction fix will apply. The .uproject certainly is using the correct path for my compiled editor. I normally open the .sln file directly, not via the UE4 Editor. Sometimes it will re-parse everything, sometimes not. I can't for the life of me figure out what triggers it.

I do have other versions of UE4 installed for different projects, and they all seem to have this reparsing issue, but everything is pretty separated.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17027 Posts

Posted - Nov 17 2020 :  08:57:16 AM  Show Profile  Reply with Quote
With one of your Unreal Engine solutions open, can you please look at:

VA Options -> C/C++ Directories

and check the list of stable include directories. Does this include all of your Unreal Engine sub-directories? You should should see every single sub-directory under the base directory for Unreal Engine in this list.

Even if the source code was downloaded to C drive, you can still run into the problem where VA does not realise that this is the unreal engine source code, depending on which directory the source code is based under. So this test should tell us if VA thinks that this is a stable set of directories for Unreal Engine or not.

zen is the art of being at one with the two'ness
Go to Top of Page

amoldeshpande
Senior Member

USA
29 Posts

Posted - Nov 26 2020 :  09:45:24 AM  Show Profile  Reply with Quote
quote:
Originally posted by feline

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.



Not trying to be a jerk here, but have you considered looking at HKLM\Software\EpicGames\UnrealEngine\4.xx for the install location and then parse the project file to find the version being used in the project to match ?

The toolchain architecture that Epic makes tends to be stable for years of an Engine version's life and major changes would roll out very slowly. Enough time to revisit if needed.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17027 Posts

Posted - Nov 26 2020 :  11:22:53 AM  Show Profile  Reply with Quote
Unfortunately it's not that simple. I have one machine that has 2 or 3 different versions of Unreal Engine installed via the Epic Games launcher, it also has a separate version of the Unreal Engine source code downloaded from Github and compiled.

Checking on this machine, the registry key lists 5 different install locations, for 5 different versions of Unreal Engine, but there is no mention at all of the version built from the downloaded source code.

zen is the art of being at one with the two'ness
Go to Top of Page

amoldeshpande
Senior Member

USA
29 Posts

Posted - Nov 26 2020 :  12:21:22 PM  Show Profile  Reply with Quote
quote:
Checking on this machine, the registry key lists 5 different install locations, for 5 different versions of Unreal Engine, but there is no mention at all of the version built from the downloaded source code.


Well, obviously that's under HKCU\Software\Epic Games\Unreal Engine\Builds\someguid
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17027 Posts

Posted - Nov 26 2020 :  12:28:35 PM  Show Profile  Reply with Quote
Ah, I knew it had to be somewhere

Defining the location of the Unreal Engine tree sounds really simple, and in simple cases it is. Unfortunately once you get into complex cases, I have yet to pin down a good, simple rule that works well. Some of our users are also working with customised versions of Unreal Engine, so simply relying on features of the "original" Unreal Engine tree breaks down in these cases.

If you have a good plan I would certainly be interested!

zen is the art of being at one with the two'ness
Go to Top of Page

amoldeshpande
Senior Member

USA
29 Posts

Posted - Nov 26 2020 :  1:08:03 PM  Show Profile  Reply with Quote
Well, I don't know the ins and outs of VaX, but every UE4.vcxproj seems to have a BuiltWithUnrealBuildTool configuration (or you could just go by project file name) to detect that this is a UE4 project. Within the project file, there seem to be OutDir and IntDir properties which point to the engine version in use by that project.

If all we're interested in is finding the UE4 source tree for a given project.

Rooting around in project files may seem weird, but it's likely to be a pretty stable approach since Epic doesn't usually go nuts changing things in the toolchain. You could probably ask on their licensee forums (or one of the users here who has a license could) if they have another, recommended way to detect the source tree.



Go to Top of Page
Page: of 2 Previous Topic Topic Next Topic  
Previous Page
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
© 2019 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000