IDE 2.x - Update: File Locations Issue is a bug with Visual Micro

Updated: My issue is actually related to a bug with Visual Micro - I will be taking it up with them. However, I spent several hours trying to track the issue down due to lack of documentation, and a lack of options or information in the application which would have made it easier to identify there are 3 library locations:

The IDE Directory only contains the libraries for the Arduino AVR Boards.
Your Sketchbook folder is where manually installed libraries are installed.
Any libraries installed with the Board Manager are installed under the \Users<username>\AppData\LocalArduino15\ folder

The issue I'm having with Visual Micro is with IDE 2.x, despite configuring the folder locations properly, intellisense/Visual Micro fails to find the libraries and provides errors - I don't have this issue with IDE 1.8.x. However, I found when using IDE 2.x with Visual Micro, the error clears up after I build the sketch, which is rather kind of odd, but it seems to work. So I'm reporting the bug with Visual Micro.

I don't use Visual Micro but wonder if you can expand on the problem with the directory organisation for use with Visual Micro?

I can provide more details when i get back to my computer, but the Arduino IDE 2.X puts library files in at least 3 different locations - the installation folder, the documents folder, and in an apps folder.

My specific problem is Im trying to program for a TTGO T-Display board which needs a lot of libraries. I believe most of them the 2.x IDE is installing in the apps folder and theyre from the boards manager installation of the ESP32 board. Those libraries end up in a string of folders and there are multiple variations of the same file. So Visual Studio or Visual Micro is not recognizing the libraries and I cant see to get it to recognize them. About the only thing I could do is recopy all of the libraries, but thats not what you should have to do - the libraries should not be split up in 3+ locations...

Ok, maybe it's just something weird with Visual Micro, which it doesn't do with the previous versions - Its still kind of irritating that all the files and libraries are all over the place with the 2.x IDE...

If I use the 1.8.x IDE, with the library locations, which there are only 2 (within the installed app and in the documents folder for custom libraries) then it works fine - it immediately recognizes the references. When using the 2.x IDE, the downloaded boards package is in an appdata folder. When referencing those libraries, Visual Micro does not immediately find them and throws intellisense errors stating it can't find the source code. However, after playing with it, I found that it successfully compiled the program and the errors went away.

So I guess it works, it's just irritating and wasted a day+ of my time trying to troubleshoot.

You can see the #include "EEPROM.h"; is not showing up being in error, but the following include statement is - the EEPROM statement was erroring out before hand, but it cleared up after I ran the build.


I'm glad you got it solved.

If not mistaken your TTGO uses an ESP32 so for a portable installation of IDE 1.x the board package will be installed in pathToInstallation\portable\packages\esp32 and for IDE 2.x it will be C:\Users\1john\AppData\Local\Arduino15\packages\esp32. The latter will also be used for a normal (non-portable) installation of IDE 1.x.

The above directories also contain some hardware specific libraries like the EEPROM library.

The default directory for 3rd party libraries (like the Adafruit_GFX library) for the portable installation of IDE 1.x is pathToInstallation\portable\sketchbook\libraries, for IDE 2.x and a non-portable installation of IDE 1.x it is C:\Users\1john\OneDrive\Documents\Arduino\libraries.

I do not know what your initial configuration was and which steps you took to solve the problem but I suspect that you had an incorrect configuration in Visual Micro. For the Adrafruit_GFX library I suspect that the library was not in C:\Users\1john\OneDrive\Documents\Arduino\libraries (as shown in your screenshot) so had to be installed there, for the EEPROM library I have no idea.

IDE1.x and IDE2.x are EXTREMELY different, BUT the files a user needs access to are in the same place. I have both IDEs installed, and if I add a library in one, it shows up in the other; it's the same for boards. Here are a couple screen grabs showing that.


Yes, the Arduino libraries are in 3 locations, one for builtin, one for hardware, one for user.

Weird, I guess it's a bug with VisualMicro - I thought the 1.X IDE stored the board manager stuff, or hardware, in the program folder. Maybe that changed. It's odd that VisualMicro works fine with the 1.X IDE, but doesn't identify the libraries for 2.x, but that's a bug I guess I need to be reporting to them.

Hi @noxx1

The "installation folder" part of your statement is incorrect. Unlike Arduino IDE 1.x, libraries are not bundled with the Arduino IDE installation, so there are no libraries under the installation folder. The libraries are all under two distinct locations:

Arduino IDE 1.x stores libraries in four locations:

  • libraries subfolder of the sketchbook folder, which contains the Library Manager and manually installed libraries.
  • The data directory (e.g., C:\Users\<username>\AppData\Local\Arduino15\), which contains the "platform bundled" libraries of the platforms installed via Boards Manager.
  • The hardware\arduino\avr\libraries subfolder of the Arduino IDE installation, which contains the platform bundled libraries of the bundled "Arduino AVR Boards" installation.
  • libraries subfolder of the Arduino IDE installation, which contains the "built-in libraries".

There is a good reason for the presence of multiple variations. The platform bundled libraries are typically bundled with the Arduino boards platform (instead of being distributed as a standalone library) because the library's source code is specific to the architecture of that platform, and thus is incompatible with other boards. Each boards platform may provide its own variation of a standardized library API, with the implementation appropriate for that platform's architecture.

It is true that outdated copies of the "built-in libraries" and "Arduino AVR Boards" platform are bundled with the Arduino IDE 1.x installation. However, by default, when the user installs or updates any libraries or platforms using Arduino IDE, they are installed in external folders, just like Arduino IDE 2.x. The exception is if the user has configured the IDE in "portable" mode.

Note that this system of installing Arduino boards platforms to the C:\Users\<username>\AppData\Local\Arduino15\ folder was established in Arduino IDE 1.6.0, a decade before the release of Arduino IDE 2.x.

Nice, since I got a member of the Arduino Team here, I was wondering when we can expect a portable version of the latest IDE, as many people have been requesting.

Thanks for the clarification. It appears my issue is related to a bug with Visual Micro, and not with the folder locations. Better documentation, in application options, or information in the application that would have lead me to be able to find the locations easier may have eliminated me immediately thinking it was an issue with the Arduino IDE.

I don't have any information about the scheduling for addition of features.

The Arduino IDE developers are tracking the request for a portable mode here:

If you have a GitHub account, you can subscribe to that thread to get notifications of any new developments related to this subject:

And have been since it was opened in February 2020