Details
Description
When looking through the log4net assembly with the Red Gate .NET Reflector I noticed that the downloaded release assembly contains the 'DisableOptimizations' flag in the Debuggable assembly attribute. Further analysis showed the following things:
1. Dowloaded binary in log4net-1.2.15-bin-newkey.zip (net\4.5\release subfolder):
a. Size: 298 KB
b. 'DisableOptimizations' and 'IgnoreSymbolStoreSequencePoints' flags in assembly attribute.
c. IL Code is not optimized (nop statements are present)
2. Own build using NAnt 0.92 and build.cmd, file output from bin\net\4.5\debug:
a. Size: 298 KB
b. All flags in the DebuggableAttribute are as expected for a debug build.
c. IL Code is not optimized (nop statements are present)
3. Own build using NAnt 0.92 and build.cmd, file output from bin\net\4.5\release:
a. Exactly the same as the downloaded binary.
4. Own build using Visual Studio 2015 Update 1 in Debug configuration:
a. Size: 288 KB
b. All flags in the DebuggableAttribute are as expected for a debug build.
c. IL Code is not optimized (nop statements are present)
5. Own build using Visual Studio 2015 Update 1 in Release configuration:
a. Size: 256 KB
b. All flags in the DebuggableAttribute are as expected for a release build (only 'IgnoreSymbolStoreSequencePoints').
c. IL Code is optimized
In my opinion 1b and 1c are bugs (and of course 3, since it's the same build). An optimized (release build) assembly should not have a 'DisableOptimizations' flag and should have optimized code (no nop statements).