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
- Command:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe - Arguments:
-file "C:\gac-deploy.ps1" $(TargetPath) - Initial Directory:
$(ItemDir) - Habilitar: Use Output Window

RecPools
- 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:
- Command:
powershell.exe - Arguments:
-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
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