← 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

CampoValor
CommandC:\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

CampoValor
CommandC:\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:

Pon powershell.exe como comando y pásale estos argumentos:

-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

Artículos

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