Please be sure to read the following article and then come back. I'll pull up a chair and wait for you.
.NET 4.0 has 2 Global Assembly Cache (GAC)
Wow, I only recently noticed that .NET 4.0 has a "new GAC" ( BTW, wtf? I guess Global doesn't really mean Global? )
But I'm wondering, what does this mean to me as a Setup guy? Does the MSI support this? To find out I created a CLR 4 Class Library in Visual Studio 2010 and signed it with an SNK. I dropped it into an InstallShield Basic MSI targetting the GAC like normal and sure enough the file deployed to [WindowsFolder]Microsoft.NET\assembly\GAC_MSIL\ClassLibrary1\v4.0_1.0.0.0_token.
But, is there anything else I need to know here? My head is just spinning from this design decision ( although I seem to be in good company ) and I really want to make sure I understand all of the implications.
"A" new GAC? There should be 4 GACs on a 64-bit version of Windows: GAC, GAC_32, GAC_64, GAC_MSIL.
ReplyDeleteThe first one is the "original" GAC and the others are for bitness specific assemblies (or bitness neutral assemblies in the case of GAC_MSIL).
I haven't had to do anything special during installation. It seems MSI determines the assembly bitness from the assembly itself and puts it in the right GAC.