The following visual studio arduino compilation overview is for information only and is not required knowlege to make use of the addin
The gcc system is used to compile .hex files (*see note at the end of this document) that you will find in the _vsaddin folder of each project. In this folder you will also find the .bat files that visual micro uses to compile each sketch
When a project has been compiled a folder will be created called _vsaddin\_build. This folder will contain the .o object files from the gcc compiler and also the compiled .elf and .hex files
Prior to compile/rebuild, the addin creates a unique list of include paths from all of the .h files included in the project. These paths are passed to the gcc compiler along with the avr\include folder.
The list of paths will also include the current projects' reference paths (see visual studio project options). (The arduino addin does not add or alter visual studio project reference paths, it just uses them if they exist)
note: in the initial version using build>solution from the visual studio solution menu fails to compile. Use either the solution rebuild option or use the compile buttons on the addin tool bar
The .\_vsaddin folder

The Build/Compiler Output Window
note: when you compile, if a previous compilation does not exist, you might see some warning messages in the visual studio output window. these can be ignored. the output window will show you if the compilation succeeds
arduino visual studio compiler .bat files
The following .bat files are created and maintained automatically by the addin. The events that cause these files to alter are as follows:-
When you switch board
When you add an arduino library
When you compile the project
Description of each file
avr_build.rules
this is a static file containing the definition of the custom build.rules for the project. the file is configured custom build rules on the visual studio project menu
this file is responsible for providing the GCC_C_AVR and GCC_CPP_AVR custom build tools. when you add .c or .cpp files to your project they should automically be assigned to the respective rule./tool
build_all_begin
clear temp files from prev build
build_env.bat
enviroment variables and board/port settings
build_c_item.bat
called once for each .c file in the project. creates a filename.c.o file using avr-gcc
build_cpp_item.bat
called once for each .cpp file in the project. creates a filename.c.o file using avr-g++
link_all.bat
creates a .hex from all the .o files using the avr tools and/or uploads to the arduino using the avr upload tool

* The visual studio arduino compile option is provided as way for you to verify that your code is correct. You should not upload the resulting compilations (.hex) to your arduino unless you are happy to void the arduino warranty. These feature(s) are also provided by us without warranty or liability.