Results 1 to 8 of 8

Thread: visual Studio & ice 3.0 & Global Assembly Cache

  1. #1
    loheron is offline Registered User
    Name: Larry OHeron
    Organization: LLE/UofR
    Project: distributed apps
    Join Date
    Nov 2006
    Posts
    24

    visual Studio & ice 3.0 & Global Assembly Cache

    We have three installations of VS 2003 and/or VS2005 with both VCPP and C# projects.

    In all the installations, the ICE assemblies do not show up in the Add Reference dialog box on the .NET tab. This is a change from earlier versions where you could add references to the ICE assemblies in the global assembly cache.

    Now one must browse to the installed file, e.g. C:\Ice-3.1.0\bin\icecs.dll to add a reference. This defeats the purpose of having the global assembly cache.

    Further, to maintain platform compatibility, we standardized on Ice 3.1.0 for now. One computer was at Ice 3.1.1. The uninstall (thru Add/Remove programs) deleted the files, but did not remove the entry from the GAC. That left both 3.1.0 and 3.1.1 in the GAC, but only 3.1.0 was installed on the machine.
    At this point, 3.1.0 was uninstalled, and both 3.1.0 and 3.1.1 were manually uninstalled from the GAC thru the .net Frameworks manager. Then Ice-3.1.0-VC80.MSI was run again to install on the computer.

    I believe this led to the following error in the provided Ice demo files:
    ...\Ice-3.1.0\DemoCS\Ice\Callback. Opened in Vs2005, compiled but at runtime produced the following exception:
    {"Could not load file or assembly 'icecs, Version=3.1.1.0, Culture=neutral, PublicKeyToken=1f998c50fec78381' or one of its dependencies. The system cannot find the file specified.":"icecs, Version=3.1.1.0, Culture=neutral, PublicKeyToken=1f998c50fec78381"}

    Note that at this point, Ice 3.1.1 was no longer installed or in the global assembly cache, nor referenced in the project -- only 3.1.0 exists on the machine.

    Larry O'Heron
    250 E. River Rd
    Rochester NY 14612

  2. #2
    stephan is offline Registered User
    Name: Stephan Stapel
    Organization: Stephan Stapel
    Project: BristolNG
    Join Date
    Oct 2003
    Location
    Essen, Germany
    Posts
    172
    How about using this alternative

    http://weblogs.asp.net/jdanforth/arc.../16/43841.aspx

    or

    http://weblogs.asp.net/rmclaws/archi.../15/37743.aspx

    CommonAssemblies directories make the live much easier when working with multiple machines. Just synchronize the directories and everything will be fine.

    Stephan
    Stephan Stapel
    Software Architect
    Author of 'Verteilte Internet-Anwendungen mit Ice', ix 07/2005
    Author of 'Webbasierte Anwendungen mit IcePHP', ix, 06/2006

  3. #3
    loheron is offline Registered User
    Name: Larry OHeron
    Organization: LLE/UofR
    Project: distributed apps
    Join Date
    Nov 2006
    Posts
    24
    Stephen,

    Thank you. That is food for thought and I will review the material.

    I was interested in hearing from the folks at ZeroC why we used to be able to see the Ice reference from the GAC and no longer can. My thought is that they are building the .msi files differently now.

    I also need an understanding of why their demo code refs the non-existent 3.1.1 assembly.

    Larry O'Heron

  4. #4
    beagles's Avatar
    beagles is offline Registered User
    Name: Brent Eagles
    Organization: Eagles Technologies Inc
    Project: Asterisk SCF
    Join Date
    Feb 2003
    Location
    Newfoundland
    Posts
    111
    Before we can provide assistance you must first fill in your signature information as described in our support policy notice.
    Brent Eagles
    Digium/Eagles Technologies Inc
    St. John's, NL

    Project(s): Asterisk SCF

  5. #5
    loheron is offline Registered User
    Name: Larry OHeron
    Organization: LLE/UofR
    Project: distributed apps
    Join Date
    Nov 2006
    Posts
    24

    visual Studio & ice 3.0 & Global Assembly Cache

    I have editted my signature again.

    I look forward to your response.

    Larry O'Heron
    Lawrence O'Heron
    Univ of Rochester/Laboratory for Laser Energetics
    250 E. River Rd.
    Rochester NY 14612
    www.lle.rochester.edu

  6. #6
    michi's Avatar
    michi is offline Registered User
    Name: Michi Henning
    Organization: Triodia Technologies
    Project: I have a passing interest in Ice :-)
    Join Date
    Feb 2003
    Location
    Brisbane, Australia
    Posts
    1,055
    Further, to maintain platform compatibility, we standardized on Ice 3.1.0 for now. One computer was at Ice 3.1.1. The uninstall (thru Add/Remove programs) deleted the files, but did not remove the entry from the GAC. That left both 3.1.0 and 3.1.1 in the GAC, but only 3.1.0 was installed on the machine.
    At this point, 3.1.0 was uninstalled, and both 3.1.0 and 3.1.1 were manually uninstalled from the GAC thru the .net Frameworks manager. Then Ice-3.1.0-VC80.MSI was run again to install on the computer.

    I believe this led to the following error in the provided Ice demo files:
    ...\Ice-3.1.0\DemoCS\Ice\Callback. Opened in Vs2005, compiled but at runtime produced the following exception:
    {"Could not load file or assembly 'icecs, Version=3.1.1.0, Culture=neutral, PublicKeyToken=1f998c50fec78381' or one of its dependencies. The system cannot find the file specified.":"icecs, Version=3.1.1.0, Culture=neutral, PublicKeyToken=1f998c50fec78381"}
    The exception indicates that an assembly that the binary depends on can no longer be found by looking the standard assembly locations (such as the current directory and the GAC).

    From your description, it sounds like you were using both VS 2003 and VS 2005 on the same machine? If so, VS 2003 and 2005 have different and incompatible assemblies and APIs. In fact, you cannot use VS 2003 to link with .NET 2.0, and you cannot use VS 2005 to link with .NET 1.1.

    The error message indicates that the code was looking for the 3.1.1 version of the Ice assembly. In turn, that indicates that it was compiled against that version of Ice.

    Note that at this point, Ice 3.1.1 was no longer installed or in the global assembly cache, nor referenced in the project -- only 3.1.0 exists on the machine.
    The message clearly indicates that the binary depended on 3.1.1. So, whatever you ran was compiled at a time where 3.1.1 was still installed on the machine.

    Note that, if you compile something with 3.1.0, then uninstall 3.1.1 and run the old binaries, things will still work because 3.1.1 installs policy files that indicate to the .NET run time that 3.1.1 is backward compatible with 3.1.0, so a binary compiled against the 3.1.0 assemblies will execute using the 3.1.1 assemblies. However, this doesn't work in the other direction: Ice minor releases are backward compatible, but not forward compatible.

    If VS does not show the Ice assemblies when you browse the GAC with the "Add Reference" dialog, that indicates that the assemblies are indeed not in the GAC. (You can verify this by starting up Windows Explorer and navigating to C:\Windows\assembly.)

    Cheers,

    Michi.

  7. #7
    loheron is offline Registered User
    Name: Larry OHeron
    Organization: LLE/UofR
    Project: distributed apps
    Join Date
    Nov 2006
    Posts
    24
    The paragraph below was the key to solving the problem. I reinspected the entire GAC and subsequently discovered the policies pertaining to ICE. When I manually removed the policies, I made sufficient progress to believe that I've isolated the problem.

    That still leaves 2 issues.
    1) ICE 3.1.1, on uninstall, should (but does not) remove itsself from the GAC, and especially it should remove the policies.
    2) ICE does not show up on the Add Reference .NET tab on three different machines. That is sufficient for me to believe that something is not correct with the install package.
    Thanks for the response on the policies

    ---
    Note that, if you compile something with 3.1.0, then uninstall 3.1.1 and run the old binaries, things will still work because 3.1.1 installs policy files that indicate to the .NET run time that 3.1.1 is backward compatible with 3.1.0, so a binary compiled against the 3.1.0 assemblies will execute using the 3.1.1 assemblies. However, this doesn't work in the other direction: Ice minor releases are backward compatible, but not forward compatible.
    ---
    Lawrence O'Heron
    Univ of Rochester/Laboratory for Laser Energetics
    250 E. River Rd.
    Rochester NY 14612
    www.lle.rochester.edu

  8. #8
    michi's Avatar
    michi is offline Registered User
    Name: Michi Henning
    Organization: Triodia Technologies
    Project: I have a passing interest in Ice :-)
    Join Date
    Feb 2003
    Location
    Brisbane, Australia
    Posts
    1,055
    Thanks for the detailed report! I agree, there is something wrong with the way the assemblies are installed--they should show up in the "Add Reference" dialog. We'll have a look at this for the next release, thanks!

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Ice::Plugin && Ice::LoggerPlugin
    By Andrew in forum Help Center
    Replies: 1
    Last Post: 10-02-2008, 02:02 PM
  2. Replies: 13
    Last Post: 05-08-2008, 08:38 AM
  3. Ice 3.0.1 & Visual Studio 2005 (Express edition)
    By albertods in forum Help Center
    Replies: 6
    Last Post: 05-19-2006, 09:54 AM
  4. Replies: 22
    Last Post: 02-07-2006, 08:12 AM
  5. Ice && crob jobs
    By xdm in forum Help Center
    Replies: 2
    Last Post: 09-23-2004, 09:04 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •