SharePoint 2010 and VS2010: Scripts de post-déploiement

Le contexte

Vous développer une application SharePoint 2010 à l’aide de Visual Studio 2010 sur un serveur Windows 2008 64 bits. Vous désirer rouler un script post-déploiement (Powershell par exemple) pour déboguer:

image

Le problème

Lorsque vous y mettez un script, par exemple:

powershell $(ProjectDir)\PowerShellScript\MonSuperScriptPowerShell.ps1

Vous obtenez toujours une erreur lors de l’exécution du script:

Error occurred in deployment step 'Run Post-Deployment Command': The command "powershell $(ProjectDir)\PowerShellScript\MonSuperScriptPowerShell.ps1" exited with error code: 1.

Cette erreur est dû au fait que VS2010 roule dans un mode 32 bits, ainsi que ses scripts post-déploiement, et que les API de SharePoint 2010 roule dans un mode 64 bits. Ce qui crée des erreurs lors de l’exécution de ce dernier.

La solution

Il faut faire rouler le script en 64 bits pour qu’aucune erreur n’apparaisse. Pour ce faire, nous allons utiliser MSBuild pour faire cela.

Nous allons créer le script MonSuperScriptPowerShell.msbuild:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Install" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  
    <Target Name="Install">    
        <Exec Command="powershell .\MonSuperScriptPowerShell.ps1" /> 
    </Target>
</Project>

Celui-ci lorsqu’il sera appelé roulera le script PowerShell dans le mode 64 bits et aucune erreur ne sera généré!

Voici la ligne de commande pour le lancer à partir de VS2010:

%WinDir%\Microsoft.NET\Framework64\v4.0.30319\MSBuild 
$(ProjectDir)\PowerShellScript\MonSuperScriptPowerShell.msbuild

Et voilà, le tour est joué!

Bon post-déploiement!

Source

StackOverflow

Un autre substitut pour .Net Reflector de Red Gate

Dans mon dernier post, je proposais un substitut pour .Net Reflector. Depuis, je suis tombé sur la version beta de JustDecompile de Telerik. L’outil semble efficace et bien conçu. On peut remarquer l’intérêt pour ce genre d’outil, car les remplacements ne ce sont pas fait attendre!

Bonne décompilation!

Un substitut pour .Net Reflector de Red Gate

Si vous êtes comme moi, vous avez déjà utiliser .Net Reflector pour décompiler quelques classes .Net. Le produit est depuis quelques années une propriété de Red Gate qui gentiment éliminer la version gratuite pour la rendre payante. Je suis tombé cet article de Corey Roth où il parle que même la dernière version de Reflector contient une Time Bomb, donc que vous seriez obligé de mettre à jour vers la version payante à partir du 1er juin.

Dans son article, Corey offre une alternative très intéressante et gratuite, qui est en fait une réponse directe à la décision de Red Gate: ILSpy.

Bon espionnage ;)

J’ai reçu mon Fez Panda II et un LCD

J’ai enfin reçu mon Fez Panda II, roulant sous NETMF évidemment, de Ghi Electronics après avoir dépensé un certificat cadeau que j’avais gagné sur TinyClr.com! Fez Panda II

Je me suis aussi commandé un écran LCD rétro-éclairé de 128x64 pixels, connecté ici via mon Fez Panda II:Fez Panda II + LCD

Bon je retourne jouer avec mes bébelles.

Joyeux codage!

SP2010 et SL: ClientContext.Current est null

Lorsque l’on utilise Silverlight pour développer des web parts pour SharePoint 2010, on risque d’utiliser le Client Object Model pour Silverlight pour accéder aux données de SharePoint. Mais qu’arrive t’il si on essaie de sortir de la web part Silverlight et par exemple mettre Silverlight dans une boite de dialogue de SharePoint? Réponse: Unhandled Error in Silverlight Application Object reference not set to an instance of an object au niveau du ClientContext.Current.

Le problème vient du fait que la web part Silverlight injecte en paramètre a l’objet HTML le contexte SharePoint au bon fonctionnement du Client Object Model. Il faut donc injecté nous même les URL du site SharePoint où le Silverlight est actuellement affiché dans les initParams(MS.SP.url):

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
         width="100%" height="100%">
     <param name="source" value="MonFichierSilverlight.xap" />
     <param name="background" value="white" />
     <param name="minRuntimeVersion" value="4.0.41102.0" />
     <param name="autoUpgrade" value="true" />
     <param name="windowless" value="true" />

     <param name='initParams' value='MS.SP.url=<%= SPContext.Current.Site.Url%>/<%=SPContext.Current.Web.ServerRelativeUrl %>' />
     
     <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.41102.0" style="text-decoration: none">
         <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight"
             style="border-style: none" />
     </a>
</object>

Vous pouvez maintenant sortir de la web part Silverlight de SharePoint