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.
[VSeWSS] Inclure des ressources supplémentaires dans une WSP
Les Extensions pour Visual Studio sont très pratique pour le développement de Features, mais la génération de la WSP n'est pas toujours simple.
Dans le post précédent, nous avons que la "Vue WSP" nous permettez des modifier notre fichier manifest.xml.
Mais comment y inclure des ressources supplémentaires?
Et bien les types de projets de VSeWSS suivent l'arborescence du 12, donc il suffit de recréer l'arborescence dans notre projet.
Attention, le répetoire TEMPLATE du 12 est appelé "Templates", il ne faut pas le changer, sinon VSeWSS ne reconnait plus le répertoire.
Concernant le fichier FEATURES, il faut le laisser à l'extèrieur du dossier "Templates" sinon, VSeWSS ne considère pas le contenu comme des features.
Pour notre exemple, je vais ajouter un fichier html dans le répertoire "LAYOUTS" (je suis parti d'un projet de type webpart existant)
Quand on ouvre la "Vue WSP", voilà ce qu'on voit :
et les lignes suivantes sont ajoutées au fichier manifest.xml
Dans le post précédent, nous avons que la "Vue WSP" nous permettez des modifier notre fichier manifest.xml.
Mais comment y inclure des ressources supplémentaires?
Et bien les types de projets de VSeWSS suivent l'arborescence du 12, donc il suffit de recréer l'arborescence dans notre projet.
Attention, le répetoire TEMPLATE du 12 est appelé "Templates", il ne faut pas le changer, sinon VSeWSS ne reconnait plus le répertoire.
Concernant le fichier FEATURES, il faut le laisser à l'extèrieur du dossier "Templates" sinon, VSeWSS ne considère pas le contenu comme des features.
Pour notre exemple, je vais ajouter un fichier html dans le répertoire "LAYOUTS" (je suis parti d'un projet de type webpart existant)
Quand on ouvre la "Vue WSP", voilà ce qu'on voit :
et les lignes suivantes sont ajoutées au fichier manifest.xml
[VS2008] Afficher la vue WSP (VSeWSS 1.2)
Lorsque l'on est dans un projet de type VSeWSS, pour dévelloper une webpart par exemple.
Nous avons souvent besoin d'éditer le fichier manifest.xml.
Or, si l'on modifie celui qu est généré dans le bin/debug, à chaque génération nos modifs disparaissent.
Avec VSeWSS, il y a un affichage qui nous permet de personnaliser notre WSP, c'est la vue WSP.
Pour avoir cette vue,
Menu>Affichage>Autres fenêtres>Affichage WSP
Nous avons souvent besoin d'éditer le fichier manifest.xml.
Or, si l'on modifie celui qu est généré dans le bin/debug, à chaque génération nos modifs disparaissent.
Avec VSeWSS, il y a un affichage qui nous permet de personnaliser notre WSP, c'est la vue WSP.
Pour avoir cette vue,
Menu>Affichage>Autres fenêtres>Affichage WSP
[Sharepoint] Création d'une Webpart avec VSeWSS
Juste un petit tutoriel très simple sur la création d'une Webpart avec VSeWSS 1.2. Il faut donc avoir installé VSeWSS 1.2 ;)
Tout d'abord, ouvrons VS2008 et créons un nouveau projet.
Nous allons donc choisir comme type de projet : Sharepoint et comme modèle : Webpart
Une fois le projet créé, voilà comment il est composé
Étape 1 : Analyse de la composition du projet
L'assembly est par défaut signée.
On remarque que le projet est composé d'un dossier Webpart1 qui contient l'ensemble des éléments nécessaire à la création et au déploiement de la Webpart.
Webpart1.cs : Le fichier .cs contient le code .Net de la Webpart
[sourcecode language='c-sharp']
using System;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;
namespace Xtr.Features.ListeBureaux
{
[Guid("3e6334ce-5973-4ecd-8575-1bf4db962c75")]
public class WebPart1 : System.Web.UI.WebControls.WebParts.WebPart
{
public WebPart1()
{
}
protected override void CreateChildControls()
{
base.CreateChildControls();
// TODO: add custom rendering code here.
Label label = new Label();
label.Text = "Hello World";
this.Controls.Add(label);
}
}
}
[/sourcecode]
Webpart1.xml : Contient les informations sur la feature
[sourcecode language='xml']
< ?xml version="1.0" encoding="utf-8"?>
[/sourcecode]
Webpart1.Webpart : Permet de gérer les informations de la webpart
Elle définie son titre, sa description et le groupe auquel elle appartiendra (après son activation).
[sourcecode language='xml']
< ?xml version="1.0" encoding="utf-8"?>
[/sourcecode]
Etape 2 : Configuration
Dans notre cas cette étape est très simple, car il ne s'agit que de configurer notre seveur de développement pour le projet.
Pour se faire, vous devez :
- ouvrir la page de propriété du projet
- choisir l'élément "déboguer" dans le menu
- sélectionner "Démarrer le navigateur avec l'URL"dans la partie "Action de démarrage"
- saisir l'URL de déploiement de votre environnement de développment
Etape 3 : Déploiement du projet
Faites un clic droit sur votre projet et choisissez "Déployer"
Cette action va déployer votre webpart sur votre environnement (que vous avez choisi dans l'étape précédente)
Maintenant allons voir sur notre site de Dev si la webpart est bien déployée.
Tout d'abord, allons dans les fonctionnalités du site pour voir si celle-ci apparaît.
Elle y est et est même activée.
Ajoutons la sur notre page et voyons le résultat.
La webpart est donc fonctionnelle.
Etape 4 : Le package de déploiement généré.
Le déploiement de notre projet, génére dans le dossier bin/debug les éléments suivants :
Nous avons donc tout ce qu'il nous faut pour déployer la webpart sur d'autres serveurs.
C'est la fin de ce tutoriel qui est finalement très simple.
La création de webpart basique n'est donc pas compliquée.
Inscription à :
Articles (Atom)