For a new release I increase the version number of the executable, should I make all the dll have the same version number as the executable even if the dll is not updated at all?
Keeping the DLL version #'s the same make it easier to verify that a customer has a consistent install. To achieve this, in MSVC++ You can include the version numbers in a header file that is included into the .rc file so that you only need define the version # in one place. You probably don't want to include the build # (the 4th number in the version) in this so that you can patch DLL's individually. I put the build # in a per-DLL header file to do this.