0

So, the thing is I have several C# dlls that need to be deployed into gac on several machines. These does not have the gacutil and I would prefer if it stayed that way. How would one go about deploying these files easily, like just running a exe or batch file? Is it possible/good idea to create a executable file for gac deployment and how could this be done?

Ps. I do only have the ms visual studio express

Robert Erneborg
  • 69
  • 2
  • 12

2 Answers2

3

PowerShell is your friend:

function Gac-Util
{
    param (
        [parameter(Mandatory = $true)][string] $assembly
    )

    try
    {
        $Error.Clear()

        [Reflection.Assembly]::LoadWithPartialName("System.EnterpriseServices") | Out-Null
        [System.EnterpriseServices.Internal.Publish] $publish = New-Object System.EnterpriseServices.Internal.Publish

        if (!(Test-Path $assembly -type Leaf) ) 
            { throw "The assembly $assembly does not exist" }

        if ([System.Reflection.Assembly]::LoadFile($assembly).GetName().GetPublicKey().Length -eq 0 ) 
            { throw "The assembly $assembly must be strongly signed" }

        $publish.GacInstall($assembly)

        Write-Host "`t`t$($MyInvocation.InvocationName): Assembly $assembly gacced"
    }

    catch
    {
        Write-Host "`t`t$($MyInvocation.InvocationName): $_"
    }
}
David Brabant
  • 41,623
  • 16
  • 83
  • 111
1

Your solution is in the assembly System.EnterpriseServices.Internal

It has already been answered there : C# how to register assembly in the GAC without GacUtil?

Community
  • 1
  • 1
Ronan Lamour
  • 1,418
  • 2
  • 10
  • 15