Archived

This forum has been archived. Please start a new discussion on GitHub.

Icebox for .NET 4.0?

Currently, as icebox is built for .NET 3.5, it cant host .NET 4.0 .dlls. In addition, if you want to run icebox on an small Amazon EC2 machine (which is always 32-bit), icebox wont work: its a 64-bit build.

So: is it poassible to download a version of ICE that supports .NET 4.0, and provides separate 32-bit and 64-bit builds of icebox? If not, what are
the steps to build this myself from source?

Comments

  • xdm
    xdm La Coruña, Spain
    Hi
    Currently, as icebox is built for .NET 3.5, it cant host .NET 4.0 .dlls.

    You can host .NET 4.0 services in iceboxnet, using an application configuration file for iceboxnet.exe.

    iceboxnet.config.exe
    <?xml version="1.0"?>
    <configuration>
     <startup>
       <supportedRuntime version="v4.0" />
     </startup>
    </configuration>
    
    if you want to run icebox on an small Amazon EC2 machine (which is always 32-bit), icebox wont work: its a 64-bit build.

    Ice binary distribution provide icebox 32 and 64 builds, in bin and bin\x64 directories respectively, note that icebox is used to load C++ services, for .NET you use iceboxnet that is a .NET application.
  • Thank you for explaining how to use iceboxnet with .NET 4.0 .dll's.

    However, I can't seem to find the x32 version of "iceboxnet.exe".

    Here is the output from corflags in the x32 folder:
    C:\Program Files (x86)\ZeroC\Ice-3.4.1\bin>corflags iceboxnet.exe
    Microsoft (R) .NET Framework CorFlags Conversion Tool.  Version  4.0.30319.1
    Copyright (c) Microsoft Corporation.  All rights reserved.
    
    Version   : v2.0.50727
    CLR Header: 2.5
    PE        : PE32
    CorFlags  : 1
    ILONLY    : 1
    32BIT     : 0
    Signed    : 0
    

    As you can see, its a 64-bit build.

    Here is the output from corflags in the x64 folder:
    C:\Program Files (x86)\ZeroC\Ice-3.4.1\bin\x64>corflags iceboxnet.exe
    Microsoft (R) .NET Framework CorFlags Conversion Tool.  Version  4.0.30319.1
    Copyright (c) Microsoft Corporation.  All rights reserved.
    
    corflags : error CF002 : Could not open file for reading
    

    As you can see, there is no file in the x64 folder.

    So, to fix this problem, you need to:

    1. Shift the x64 build of "iceboxnet.exe" from the x32 folder into the x64 folder.
    2. Create a x32 build of "iceboxnet.exe" and put it into the x32 folder.

    As an aside, I think you should display some meaningful error when the user attempts to load a .NET 4.0 .dll into "iceboxnet.exe". I just assumed that it was impossible, as the error message did not indicate the source of the problem, and nothing else worked except for recompiling a .NET 3.5 .dll (I also spent a lot of time trying to diagnose this problem).
  • xdm
    xdm La Coruña, Spain
    As you can see, there is no file in the x64 folder.

    There is only bin\iceboxnet.exe because it is a .NET application. We provide 32/64 for C++ services/libs.

    For .NET the same executable run 32/64 bit mode. The 32BIT flag you show, is to force to run iceboxnet.exe in 32bit mode in a 64 bit OS.
  • Thanks, I understand now. As an aside, I tried compiled a .NET 4.0 version by downloading the source and running nmake. It worked, however, its probably just as easy to use a custom .config file on the official release.