Details

    • Type: Bug
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 1.2.15
    • Fix Version/s: 2.0.6
    • Component/s: Builds
    • Labels:
    • Environment:
      Windows 10 1511 x64
      NAnt 0.92
      Visual Studio 2015 Update 1

      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).

        Activity

        Hide
        bodewig Stefan Bodewig added a comment -

        I think I've fixed it with svn revision 1735899 but it would be good if you could double check.

        IIUC we've introduced this when we started adding PDBs for the release builds since /debug:pdbonly implies 'DisableOptimizations' and 'IgnoreSymbolStoreSequencePoints'. Older releases have been compiled with /debug:false in release mode. I've now added /optimize+ which should keep IgnoreSymbolStoreSequencePoints (because of pdbonly) but remove DisableOptimizations.

        Show
        bodewig Stefan Bodewig added a comment - I think I've fixed it with svn revision 1735899 but it would be good if you could double check. IIUC we've introduced this when we started adding PDBs for the release builds since /debug:pdbonly implies 'DisableOptimizations' and 'IgnoreSymbolStoreSequencePoints'. Older releases have been compiled with /debug:false in release mode. I've now added /optimize+ which should keep IgnoreSymbolStoreSequencePoints (because of pdbonly) but remove DisableOptimizations.
        Hide
        manuel.pallier@beko.at Manuel Pallier added a comment -

        Looks good. Thanks!

        Show
        manuel.pallier@beko.at Manuel Pallier added a comment - Looks good. Thanks!
        Hide
        bodewig Stefan Bodewig added a comment -

        Great, thank you for your investigation and thank you for checking!

        Have a nice vacation

        Show
        bodewig Stefan Bodewig added a comment - Great, thank you for your investigation and thank you for checking! Have a nice vacation

          People

          • Assignee:
            Unassigned
            Reporter:
            manuel.pallier@beko.at Manuel Pallier
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development