I have some build agents that is building .NET code for us through a TeamCity setup, and I\'m beginning to wonder if despite the project settings, they\'re outputting .NET 4
The metadata version v4.0.30319
is for .Net 4.0. See here:
Generation Version number
1.0 - 1.0.3705
1.1 - 1.1.4322.573
2.0 - 2.0.50727.42
3.0 - 3.0.4506.30
3.5 - 3.5.21022.8
4.0 - 4.0.30319.1
4.5 - 4.5.50709.17929
4.5.1 - 4.5.50938.18408
Run ildasm.exe and look at the manifest. You'll see the TargetFrameworkAttribute:
.custom instance void [mscorlib]System.Runtime.Versioning.TargetFrameworkAttribute::.ctor(string) =
( 01 00 1A 2E 4E 45 54 46 72 61 6D 65 77 6F 72 6B // ....NETFramework
2C 56 65 72 73 69 6F 6E 3D 76 34 2E 35 01 00 54 // ,Version=v4.5..T
0E 14 46 72 61 6D 65 77 6F 72 6B 44 69 73 70 6C // ..FrameworkDispl
61 79 4E 61 6D 65 12 2E 4E 45 54 20 46 72 61 6D // ayName..NET Fram
65 77 6F 72 6B 20 34 2E 35 ) // ework 4.5
The CLR uses this attribute to verify that the correct version is present on the machine, prompting the user to get it automatically installed if it is not.