Deploying Assemblies to the GAC
Posted 15 May 2013, 14:50 | by Ben Duguid | Perma-link
Pulling together a couple of helpful posts into one place so that I can find it later...
I wanted to deploy an assembly to the Global Assembly Cache (GAC) on a Windows 2008 server - GacUtil isn't neccessary installed, and I don't really want to install the entire SDK on to the server just to get it.
PowerShell to the rescue!
The first thing I needed to do was enable PowerShell to load .Net 4 assemblies, this was done by adding a config file into the PowerShell home directory (run $pshome
from a PowerShell console), with the following contents:
<configuration>
<startup uselegacyv2runtimeactivationpolicy="true">
<supportedruntime version="v4.0.30319" />
<supportedruntime version="v2.0.50727" />
</startup>
</configuration>
You can then run the following commands to load the 4.0 instance of EnterpriseServices, which will install your libraries into the correct GAC depending on it's target runtime:
[System.Reflection.Assembly]::LoadWithPartialName("System.EnterpriseServices")
$publish = New-Object System.EnterpriseServices.Internal.Publish
$publish.GacInstall("C:\PathTo\Your.Assembly.dll")
Filed under: .Net, Fixes