← Volver al blog

Despliegue rápido a la GAC y reciclaje de app pools para el desarrollo en SharePoint

Publicado el
3 min de lectura
--- vistas

Despliegue rápido a la GAC para desarrolladores de SharePoint

Este post será útil para desarrolladores de SharePoint. Durante el desarrollo, es común desplegar tu .dll a la GAC (Global Assembly Cache) para probar o depurar nuevas funciones o correcciones.


¿Por qué la GAC?

La forma más rápida es instalar tu DLL en la GAC y reciclar los application pools.
Aunque también es posible publicar y desplegar un paquete .wsp completo, eso toma 10 veces más tiempo.


Dos métodos para desplegar rápido a la GAC

Despliegue manual para cada proyecto de la solución

Pasos:

  1. Compila el proyecto.
  2. Configúralo como proyecto de inicio.
  3. Ejecuta una acción personalizada para el despliegue a la GAC.
  4. Recicla los application pools.

Recomiendo vincular estos pasos a atajos de teclado para máxima velocidad.

Configúralo en Visual Studio:
Ve a: Tools → Options → Environment → Keyboard

Visual Studio Keybindings

Mis mapeos (ejemplo):

  • Build.BuildSolution: Alt + B
  • Project.SetasStartUpProject: Alt + S
  • Tools.ExternalCommand1: Alt + D (ejecuta gac-deploy.ps1)
  • Tools.ExternalCommand2: Alt + R (ejecuta rec-pools.ps1)
  • Debug.AttachtoProcess: Alt + A

Configuración de External Commands:

External Commands

GacDeploy

  • Command: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
  • Arguments: -file "C:\gac-deploy.ps1" $(TargetPath)
  • Initial Directory: $(ItemDir)
  • Habilitar: Use Output Window
GAC Deploy Setup

RecPools

  • Command: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
  • Arguments: -file "C:\rec-pools.ps1"
  • Initial Directory: $(ItemDir)
  • Habilitar: Use Output Window
Recycle Pools Setup

StrongName (también útil)

Obtén el nombre completo del assembly mediante:

  • Command: powershell.exe
  • Arguments:
    -command "[System.Reflection.AssemblyName]::GetAssemblyName(\"$(TargetPath)\").FullName"
    
  1. Despliegue automático para todos los proyectos vía VsCommandBuddy

Pasos:

  1. Instala la extensión VsCommandBuddy
  2. Crea el archivo de configuración .svcb.json en la carpeta de tu solución.
  3. Añade un comando de despliegue.

Ejemplo de script de PowerShell

gac-deploy.ps1 (GitHub)

param([String[]]$dllPath)

Import-Module WebAdministration

$gacutil = "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\gacutil.exe"

foreach($i in $dllPath) {
    Write-Host "[x] Installing $i"
    & $gacutil -i $i
}

& "$PSScriptRoot\Recycle-Pools.ps1"

Recycle-Pools.ps1

Import-Module WebAdministration

$appCmd = "C:\Windows\System32\inetsrv\appcmd.exe"

$appPools = @("SharePoint - 80", "SharePoint - 4448")

foreach ($pool in $appPools) {
    & $appCmd recycle apppool /apppool.name:"$pool"
}

Start-Sleep -Seconds 5

net stop SPTimerV4
net start SPTimerV4

& $appCmd list wp

Configuración de CommandBuddy (.svcb.json)

{
  "cmdname": "deploy",
  "title": "deploy",
  "description": "deploy",
  "cwd": "$(SolutionDir)",
  "filename": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
  "arguments": "-command \"C:\\gac-deploy.ps1\" -dllPath  $(SolutionDir)\\Project1\\bin\\$(Configuration)\\Project1.dll,$(SolutionDir)\\Project2\\bin\\$(Configuration)\\Project2.dll,$(SolutionDir)\\Project3\\bin\\$(Configuration)\\Project3.dll",
  "async": false
}
  • $(SolutionDir) – ruta completa a tu solución.
  • $(Configuration) – configuración de build (por ejemplo, Debug/Release).

Ejecútalo desde: Tools → Deploy

Disponible para colaboración por contrato

Estoy disponible para colaborar por contrato. Si tiene una idea de proyecto interesante, reserve una llamada por Calendly.

Agenda una llamada de 30 min