This is the question - "Is this "Bug" or "Feature"?
Right now App.Version return the version of LabVIEW Run-Time Engine. So, you have at least two versions - one is Application, and another one - RunTime. So, may be in the next version this behaviour will be clearly documented and the problem will be "solved".
But I agree with you, that its will be very convinient to get Version of the Application with native LabVIEW property node instead of playing with WinAPI or .NET or other tricks.
If you ask NI it's a "feature". If you ask everybody else, it's a "bug".
I just use a global variable that is a string with the default value set to the version number. You can also use a simple VI that outputs a string from a block diagram string constant that's the version number. Simply, admittedly kludgey, but it works every time.
Thanks for the information everyone. This was reported to R&D (# 4G27K2P2) for further investigation. The workarounds mentioned above are great suggestions. If you are looking for more information, there are KnowledgeBase articles on how to use .NET or Windows API calls to determine the version of an executable.
Jennifer R. National Instruments Applications Engineer