This isn't actually a change in behavior. If you try to install the SSCLI version of an assembly in the .NET Framework GAC I think you'll have the same results.
This issue is generally described in sscli\docs\relnotes.html in the first section, SSCLI assembly keys, although this particular situation isn't covered. The problem is due to the way the ECMA key is handled as a special case (System.Windows.Forms.dll is signed with the ECMA key even though it's not in the standard). In the .NET Framework, assemblies with this key are actually signed with the Microsoft private key. In SSCLI since we can't ship the Microsoft private key, ECMA assemblies are signed with the Rotor key. What this means is that because the SSCLI thinks that *only* the Rotor public key is a valid substitute for the ECMA key, it will not allow .NET Framework assemblies to be installed in the GAC. I had initially thought that you could turn off key verification (sn -Vr) for these assemblies but you can only turn off verification for assemblies that are partially signed (public key and not signed) but not for fully signed assemblies that don't contain what's considered a valid signature (created with either the private key that matches the public key or the one, wired-in, special private key that's a substitute for the ECMA private key which doesn't exist) so I don't believe there's a way to easily do this. You can view source that does the key substitution in sscli\clr\src\dlls\mscorsn\strongname.cpp. Search for "ECMA" or "neutral" or "Rotor". The source for the gacutil tool is in sscli\clr\src\tools\gac\gac.cpp. John This posting is provided "AS IS" with no warranties, and confers no rights. -----Original Message----- From: Donal Lafferty [mailto:[EMAIL PROTECTED]] Sent: Tuesday, August 13, 2002 1:52 PM To: [EMAIL PROTECTED] Subject: gacutil.exe While playing around with gacutil.exe, I noticed a difference in behaviour between the commercial and the rotor version. With the commercial version, and a standard Command Prompt, this works: C:\GACtest>gacutil /i System.Windows.Forms.dll Microsoft (R) .NET Global Assembly Cache Utility. Version 1.0.3705.0 Copyright (C) Microsoft Corporation 1998-2001. All rights reserved. Assembly successfully added to the cache C:\GACtest> Note that the GACTest folder contains System.Windows.Forms.dll. With the Rotor version, and a checked-build environment, the same command does not work: Microsoft (R) Shared Source CLI Global Assembly Cache Utility. Version 1.0.0002.0 Copyright (C) Microsoft Corporation 1998-2002. All rights reserved. Failure adding assembly to the cache: Strong name signature could not be verified. Was the assembly built delay-signed? C:\GACtest> At first I thought it might be because System.Windows.Forms was a multi- module assembly. However, I think I've copied all the referenced DLLs into the GACtest folder and still get the same result. Besides, the files I added to the directory were already in the Command Prompt shell's PATH setting. Can anyone suggest a good reference for gacutil.exe, or explain what's going on? Thanks a bunch, DL