Reputation: 6375
On my PC at work I have a license for Visual Studio Ultimate 2012 but at home I am using Visual Basic express, since I don't really need most of the advanced features.
However I was wondering if there is a difference in the VB.NET build that I create with Ultimate versus the build I do with Express.
I thought it was easy enough to test: Just build it with both versions and compare the .EXE files. I noticed that they were pretty much identical, but here and there I found little differences. ~10-12 bytes of the same value were a chain of 10-12 bytes of another value in the other .EXE and so on.
Are these just version identifiers or machine specific parameters or are there actual differences between the versions?
Some examples (same code, compiled on the same machine, just 1 minute apart so everything should be the same, both Release builds. Offsets are decimal.)
Upvotes: 4
Views: 2707
Reputation: 5369
The .NET compilers are actually almost open source, via the Microsoft Shared Source Initiative. The compiler has nothing to do with the Visual Studio version you are using. Visual Studio, regardless of its version, it would use the same compiler. Theoretically, another IDE could also use the NET compiler. SharpDevelop is such an example.
The build outcome depends on some local machine properties and therefore you would find differences even if you used Visual Studio Ultimate in both machines.
Upvotes: 3
Reputation: 1054
in reality the differences in your compiled application will not have any difference at the user or operation level - at the binary level they will have different job ids /GUIDS etc.
also possibly defaulting authors (if you do not set the author for the program and you have visual studio set to default to the user's name this could change some visible binary)
overall functionally you should not see any difference as the compilers are compiling to the .net framework using the same final objective.
Upvotes: 1