viernes, 2 de septiembre de 2016

Depurar un sitio de SharePoint Online si no es de desarrollador. Sideloading of apps is not enabled in this site.

A veces pasa, tienes que hacer las cosas sin ver y guiándote más por la intuición porque el equipo de tu hospital está anticuado o incompleto.

Ya vale!

En este caso teníamos un sitio de SharePoint Online de tipo Project en el cual teníamos que depurar una app desarrollada en Visual Studio, de aquí inferimos que no podemos depurar nuestro desarrollo en un sitio para Project por el claro motivo de que el sitio de desarrollador no puede serlo a la vez de Project.

Ya suponemos querido lector que has configurado en Azure tu ServiceBus y has puesto su cadena de conexión correctamente en las propiedades del proyecto de SharePoint App, pues bien, al darle a F5 para iniciar tu depuración te aparece el siguiente mensaje como error:

Error en el paso de implementación 'Instalar aplicación para SharePoint': La instalación de prueba de aplicaciones no está habilitada en este sitio.

O bien en inglés, no marginemos a la lengua de Shakespeare:

Sideloading of apps is not enabled in this site.

Lo cual quiere decir que este sitio no es de desarrollador, si no que está pensado para hacer funciones de otro tipo de entorno.

¿Cómo actuar en este caso que tenemos que utilizar un sitio que no es desarrollador para desarrollar?

Habilitando la característica Sideloading en el sitio.

Primero, si no lo has hecho ya, instala la herramienta de PowerShell para Azure con sus módulos.

Después abre un PowerShell ISE o una ventana de PowerShell Azure, a gusto del consumidor, y ejecuta el siguiente script:

$programFiles = [environment]::getfolderpath("programfiles")
add-type -Path $programFiles'\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.SharePoint.Client.dll'
Write-Host 'To enable SharePoint app sideLoading, enter Site Url, username and password'
$siteurl = Read-Host 'Site Url'
$username = Read-Host "User Name"
$password = Read-Host -AsSecureString 'Password'
$outfilepath = $siteurl -replace ':', '_' -replace '/', '_'
try
{
    [Microsoft.SharePoint.Client.ClientContext]$cc = New-Object Microsoft.SharePoint.Client.ClientContext($siteurl)
    [Microsoft.SharePoint.Client.SharePointOnlineCredentials]$spocreds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password)
    $cc.Credentials = $spocreds
    Write-Host -ForegroundColor Yellow 'SideLoading feature is not enabled on the site:' $siteurl
    $site = $cc.Site;
    $sideLoadingGuid = new-object System.Guid "AE3A1339-61F5-4f8f-81A7-ABD2DA956A7D"
    $site.Features.Add($sideLoadingGuid, $true, [Microsoft.SharePoint.Client.FeatureDefinitionScope]::None);
    $cc.ExecuteQuery();
    Write-Host -ForegroundColor Green 'SideLoading feature enabled on site' $siteurl
}
catch
{
    Write-Host -ForegroundColor Red 'Error encountered when trying to enable SideLoading feature' $siteurl, ':' $Error[0].ToString();
}
En nuestro caso, la ruta de la dll Microsoft.SharePoint.Client estaba en C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll

Ahora prueba tu código con Visual Studio, deberías poder depurar sin que te de el anterior error, basta un F5 teniendo como proyecto de inicio el proyecto de SharePoint con el ServiceBus configurado correctamente.

Cuando termines de depurar y quieras dejar todo como estaba, sustituye la línea $site.Features.Add($sideLoadingGuid, $true, [Microsoft.SharePoint.Client.FeatureDefinitionScope]::None);
por
 $site.Features.Remove($sideLoadingGuid, $true);

Gracias: http://www.alexandervanwynsberghe.be/debugging-apps-for-sharepoint-online/

1 comentario: