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:
- Compila el proyecto.
- Configúralo como proyecto de inicio.
- Ejecuta una acción personalizada para el despliegue a la GAC.
- 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

Mis mapeos (ejemplo):
Build.BuildSolution:Alt + BProject.SetasStartUpProject:Alt + STools.ExternalCommand1:Alt + D(ejecutagac-deploy.ps1)Tools.ExternalCommand2:Alt + R(ejecutarec-pools.ps1)Debug.AttachtoProcess:Alt + A
Configuración de External Commands:

GacDeploy
| Campo | Valor |
|---|---|
| Command | C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe |
| Arguments | -file "C:\gac-deploy.ps1" $(TargetPath) |
| Initial Directory | $(ItemDir) |
- Habilitar: Use Output Window

RecPools
| Campo | Valor |
|---|---|
| Command | C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe |
| Arguments | -file "C:\rec-pools.ps1" |
| Initial Directory | $(ItemDir) |
- Habilitar: Use Output Window

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"
- Despliegue automático para todos los proyectos vía VsCommandBuddy
Pasos:
- Instala la extensión VsCommandBuddy
- Crea el archivo de configuración .svcb.json en la carpeta de tu solución.
- Añade un comando de despliegue.
Ejemplo de script de PowerShell
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"
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
Relacionado
Artículos
Cómo ejecutar comandos SSH en tu servidor con GitHub Actions
Una guía práctica para automatizar la gestión del servidor y los despliegues ejecutando comandos SSH desde workflows de GitHub Actions
SharePoint 2013/2016: migrando el Search Service a otro servidor
Una guía paso a paso para migrar la Search Service Application de SharePoint a un nuevo servidor, incluyendo comandos de PowerShell y gestión de la topología.
Organización de módulos de PowerShell para el desarrollo en SharePoint
Una guía práctica para organizar scripts y módulos de PowerShell para el desarrollo en SharePoint, incluyendo dot-sourcing, manifiestos de módulo y una estructura de código reutilizable.
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