Un article intéressant sur PCinpact sur l'orientation de Microsoft et visual Studio 10 :
Microsoft ajoute la modélisation au coeur de Visual Studio 10
Et un autre article sur le même sujet :
Microsoft dévoile le futur de ses outils de développement
Vous trouverez sur ce blog toutes les astuces, liens, solutions et tutoriels qui m'ont aidés à résoudre l'ensemble des problèmes ou demandes rencontrés dans mon travail. Ce blog est donc mon pense-bête ;) Travaillant sous Sharepoint et Asp.Net, beaucoup de posts seront liés aux technos Microsoft.
mardi 30 septembre 2008
[SPD] Problème d'URL après une publication
Sur mon serveur de test, j'ai publié via Sharepoint Designer des modèles de pages d'un site à l'autre.
Et après je me suis aperçu que j'avais plein de problèmes et d'erreurs.
En y regardant de plus prêt j'ai vu que les urls des 2 sites se mélangeaient.
Heureusement, grâce à une des extensions de Gary Lapointe, j'ai pu rétablir l'ensemble des webapplications:
Fix Publishing Pages Page Layout URL
Cette extensions permet donc de corriger toutes les locations érronnées sur un site qui a été migré.
Encore merci à lui pour cette extension ;)
Et après je me suis aperçu que j'avais plein de problèmes et d'erreurs.
En y regardant de plus prêt j'ai vu que les urls des 2 sites se mélangeaient.
Heureusement, grâce à une des extensions de Gary Lapointe, j'ai pu rétablir l'ensemble des webapplications:
Fix Publishing Pages Page Layout URL
C:\>stsadm -help gl-fixpublishingpagespagelayouturl
stsadm -o gl-fixpublishingpagespagelayouturl
Fixes the Page Layout URL property of publishing pages which can get messed
up during an upgrade or from importing into a new farm.
Parameters:
-url
-scope
[-pagename]
{[-pagelayoutto (format: "url, desc")>] /
[-regexsearchstringreplacement of the page layout url>]
[-regexreplacestringreplacement of the page layout url>]}
[-verbose]
[-test]
Cette extensions permet donc de corriger toutes les locations érronnées sur un site qui a été migré.
Encore merci à lui pour cette extension ;)
jeudi 25 septembre 2008
[Sharepoint] Outils de préchauffe
La Team Sharepoint de Microsoft vient de publier sur son Blog un petit récapitulatif des scripts de préchauffe utilisés.
WarmUpServer
http://blogs.msdn.com/joelo/archive/2006/08/13/697044.aspx
PowerShell
http://blogs.inetium.com/blogs/khofer/archive/2007/11/13/simple-sharepoint-warm-up-script.aspx
Codeplex Warm Up Job
mardi 23 septembre 2008
[Tools] Plusieurs browsers en Standalone
Comme beaucoup, lorsqu'il s'agit de faire du design web, nous avons besoin de tester celui-ci sur différents navigateurs sans pour autant les installer.
Ou dans le cas d'IE6 et IE7 les voir fonctionner sur la même machine.
En cherchant, je suis tombé sur ce site qui propose toute une panoplie de navigateurs "Portable" :
http://www.wikistuce.info/doku.php/logiciels/une_panoplie_de_navigateur
Très pratique.
Ou dans le cas d'IE6 et IE7 les voir fonctionner sur la même machine.
En cherchant, je suis tombé sur ce site qui propose toute une panoplie de navigateurs "Portable" :
http://www.wikistuce.info/doku.php/logiciels/une_panoplie_de_navigateur
Très pratique.
[Sharepoint] MasterPage et CSS sous forme de Feature
Récemment, je devais customiser mon Sharepoint pour qu'il adopte la charte graphique de l'entreprise.
Dans ce post, nous verrons donc une des solutions (peut être pas la meilleure, mais pour le moment elle me convient :) ) pour créer des features contenant les masterpages, les css et les images.
Pour le développement, j'utilise, comme d'habitude, l'extension VSeWSS.
Pour faire mon projet je me suis basé sur le trés bon (et surtout très clair, merci à lui) post de phil : SharePoint 2007 : Creer une MasterPage et la deployer via une feature
Tout d'abord, nous créons un nouveau projet.

Ensuite on lui ajoute un nouvel élément:

Voila l' arborescence obtenue:

On supprime le fichier sample.txt, ensuite, on renomme le fichier Module.xml en ProvisionedFiles.xml (pour suivre le poste de phil) et je l' édite.
Afin de ne pas me perdre dans l'arborescence, j'ai préféré suivre celle de sharepoint et voila ce que ça donne:

Le projet se décompose en 2 parties :
La feature:
Définit ici sous le nom de XtrMasterPage, elle contiendra les fichiers .xml et .cs nécessaire à la feature
Les Fichiers:
Pour permettre leurs déploiements via la WSP, j'utilise le dossier "Templates" de VSeWSS (voir [VSeWSS] Inclure des ressources supplémentaires dans une WSP)et y reproduit l'arborescence de ma feature:
Ensuite, on complète le fichier xml :
[sourcecode language='xml']
[/sourcecode]
Ainsi, lorque l'on vadans la Vue WSP sous VS2008, voilà ce que l'on obtient :

On modifie maintenant, si besoin, le fichier feature.xml. Par exemple comme celui-ci :
[sourcecode language='xml']
[/sourcecode]
Ensuite, on déploie la WSP générée.

Dans le contenu du site, on peut y voir, :
Les css

Les Master Pages

Voilà, on peut maintenant la choisir dans "MonMOSS > Paramètres du site > Paramètres de la page maître du site" (sous MOSS uniquement)
Dans ce post, nous verrons donc une des solutions (peut être pas la meilleure, mais pour le moment elle me convient :) ) pour créer des features contenant les masterpages, les css et les images.
Pour le développement, j'utilise, comme d'habitude, l'extension VSeWSS.
Pour faire mon projet je me suis basé sur le trés bon (et surtout très clair, merci à lui) post de phil : SharePoint 2007 : Creer une MasterPage et la deployer via une feature
Tout d'abord, nous créons un nouveau projet.
Ensuite on lui ajoute un nouvel élément:
- Catégorie : Sharepoint
- Modèle : Module
- Nom : Je l'appelle XtrMasterPage
Voila l' arborescence obtenue:
On supprime le fichier sample.txt, ensuite, on renomme le fichier Module.xml en ProvisionedFiles.xml (pour suivre le poste de phil) et je l' édite.
Afin de ne pas me perdre dans l'arborescence, j'ai préféré suivre celle de sharepoint et voila ce que ça donne:
Le projet se décompose en 2 parties :
- La feature
- Les fichiers
La feature:
Définit ici sous le nom de XtrMasterPage, elle contiendra les fichiers .xml et .cs nécessaire à la feature
Les Fichiers:
Pour permettre leurs déploiements via la WSP, j'utilise le dossier "Templates" de VSeWSS (voir [VSeWSS] Inclure des ressources supplémentaires dans une WSP)et y reproduit l'arborescence de ma feature:
- Dans _catalogs/masterpage, on y dépose les masterpages
- Dans Style Library, on y dépose les css
- Dans Style Library/Images, on y dépose les images utiles aux css
Ensuite, on complète le fichier xml :
[sourcecode language='xml']
[/sourcecode]
Ainsi, lorque l'on vadans la Vue WSP sous VS2008, voilà ce que l'on obtient :
On modifie maintenant, si besoin, le fichier feature.xml. Par exemple comme celui-ci :
[sourcecode language='xml']
[/sourcecode]
Ensuite, on déploie la WSP générée.
Dans le contenu du site, on peut y voir, :
Les css
Les Master Pages
Voilà, on peut maintenant la choisir dans "MonMOSS > Paramètres du site > Paramètres de la page maître du site" (sous MOSS uniquement)
mercredi 10 septembre 2008
[Sharepoint] Créer un Delegate Control
Ayant eu le besoin de faire un delegate control facilement déployable, j'ai voulu le créer avec VSeWSS.
Mais, il n'y a pas la possibilité d'ajouter un élément delegate control dans le projet.
Je vais donc présenter ici, ce que j'ai fait pour automatiser mon développement, le déploiement sur ma machine et la génération de la WSP. Cette solution me permet aussi d'avoir une prévisualisation de mon UserControl dans VS2008 et surtout, elle me permet d'avoir l'intellisense :p
Tout d'abord, je créé un site web pour créer, visualiser et tester mon userControl.
Ensuite, je créé un projet VSeWSS vide.

Ensuite, dans le site web, on ajoute un élément userControl

Voilà le code interne au userControl :
[sourcecode language='html']
< %@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
< %@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
< %@ Import Namespace="Microsoft.SharePoint" %>
< %@ Control Language="C#" ClassName="Xtr.Features.WelcomeControl"%>
[/sourcecode]
Le fichier default.aspx me permet de tester mon contrôle
Dans le projet VSeWSS, voilà l'architecture que j'ai créé (voir le post sur la gestion de ressources avec VSeWSS):

Le fichier copyAscx.bat permet de copier le .ascx du site web dans le répertoire CONTROLTEMPLATES du projet avant la génération du projet.
Voilà le contenu du fichier .bat :
@ECHO OFF
ECHO Copie du fichier ascx ...
xcopy /y "..\Xtr.DelegateControl\*.ascx" .\Templates\CONTROLTEMPLATES\
Et dans les propriétés du projet il faut ajouter les lignes suivantes :

Ensuite on ajoute le fichier module.xml avec le code suivant :
[sourcecode language='xml']
< ?xml version="1.0" encoding="utf-8"?>
http://schemas.microsoft.com/sharepoint/">
[/sourcecode]
Ensuite, il vous suffit de déployer votre projet sur votre serveur de développement.
Pour tester ce UserControl, j'ajoute la ligne suivante à l'intérieur de ma masterpage :
Voilà le résultat obtenu :
Mais, il n'y a pas la possibilité d'ajouter un élément delegate control dans le projet.
Je vais donc présenter ici, ce que j'ai fait pour automatiser mon développement, le déploiement sur ma machine et la génération de la WSP. Cette solution me permet aussi d'avoir une prévisualisation de mon UserControl dans VS2008 et surtout, elle me permet d'avoir l'intellisense :p
Tout d'abord, je créé un site web pour créer, visualiser et tester mon userControl.
Ensuite, je créé un projet VSeWSS vide.
Ensuite, dans le site web, on ajoute un élément userControl
Voilà le code interne au userControl :
[sourcecode language='html']
< %@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
< %@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
< %@ Import Namespace="Microsoft.SharePoint" %>
< %@ Control Language="C#" ClassName="Xtr.Features.WelcomeControl"%>
[/sourcecode]
Le fichier default.aspx me permet de tester mon contrôle
Dans le projet VSeWSS, voilà l'architecture que j'ai créé (voir le post sur la gestion de ressources avec VSeWSS):
Le fichier copyAscx.bat permet de copier le .ascx du site web dans le répertoire CONTROLTEMPLATES du projet avant la génération du projet.
Voilà le contenu du fichier .bat :
@ECHO OFF
ECHO Copie du fichier ascx ...
xcopy /y "..\Xtr.DelegateControl\*.ascx" .\Templates\CONTROLTEMPLATES\
Et dans les propriétés du projet il faut ajouter les lignes suivantes :
Ensuite on ajoute le fichier module.xml avec le code suivant :
[sourcecode language='xml']
< ?xml version="1.0" encoding="utf-8"?>
[/sourcecode]
Ensuite, il vous suffit de déployer votre projet sur votre serveur de développement.
Pour tester ce UserControl, j'ajoute la ligne suivante à l'intérieur de ma masterpage :
Voilà le résultat obtenu :
mercredi 3 septembre 2008
[Pense-bête] Récupérer le contenu d'un fichier via une URL
Voici juste un petit exemple "pense-bête" pour récupérer le contenu d'un fichier dans, par exemple, le dossier LAYOUTS de sharepoint.
Il fonctionne tout aussi bien avec une autre Url.
[sourcecode language='c-sharp']
string template = string.Empty;
// Creer la request avec l'Url.
WebRequest request = WebRequest.Create(new Uri(SPContext.Current.Site.Url + "/_layouts/test/monFichier.htm", UriKind.Absolute));
// On envoi les credidentials
request.Credentials = CredentialCache.DefaultCredentials;
// On récupère la response.
using (WebResponse response = request.GetResponse())
{
// On verifie le status renvoyé.
if (((HttpWebResponse)response).StatusDescription == "OK")
{
// On recupère le stream renvoyé par le server.
Stream dataStream = response.GetResponseStream();
//On l'ouvre pour le lire
using (StreamReader sr = new StreamReader(dataStream))
{
//on lit le contenu et on le copie dans template
template = sr.ReadToEnd();
}
}
}
[/sourcecode]
Il ne reste plus qu'à travaller avec notre variable "template".
Ce code est assez simple, mais est un bon début pour allez plus loin avec l'utilisation des WebRequest et WebResponse.
Notamment pour l'utilisation des services web de Sharepoint.
Il fonctionne tout aussi bien avec une autre Url.
[sourcecode language='c-sharp']
string template = string.Empty;
// Creer la request avec l'Url.
WebRequest request = WebRequest.Create(new Uri(SPContext.Current.Site.Url + "/_layouts/test/monFichier.htm", UriKind.Absolute));
// On envoi les credidentials
request.Credentials = CredentialCache.DefaultCredentials;
// On récupère la response.
using (WebResponse response = request.GetResponse())
{
// On verifie le status renvoyé.
if (((HttpWebResponse)response).StatusDescription == "OK")
{
// On recupère le stream renvoyé par le server.
Stream dataStream = response.GetResponseStream();
//On l'ouvre pour le lire
using (StreamReader sr = new StreamReader(dataStream))
{
//on lit le contenu et on le copie dans template
template = sr.ReadToEnd();
}
}
}
[/sourcecode]
Il ne reste plus qu'à travaller avec notre variable "template".
Ce code est assez simple, mais est un bon début pour allez plus loin avec l'utilisation des WebRequest et WebResponse.
Notamment pour l'utilisation des services web de Sharepoint.
Inscription à :
Articles (Atom)