Je reviens sur ce Post que j'avais fait fin d'été dernier : Accès impossible à une application web SharePoint depuis le serveur (erreur 401) / Accès impossible à une application web SharePoint depuis le serveur (erreur 401) Pour trois raisons : - Je me suis rendu compte que j'avais carrément oublié une clé registre à positionner (en tout cas d'après MSDN) - mon Post n'était pas assez précis sur le format des informations à renseigner dans le registre. Je me suis fait moi même "avoir" quand j'ai été de nouveau confronté à ce problème et que j'ai suivi ma propre procédure.. qui ne fonctionnait pas. - enfin j'ai rencontré ce souci ainsi qu'un collègue (quasiment en même ...
Nous utilisons très souvent des propriétés public sur des classes, que ce soit en get ou set. SharePoint et son SDK ni manque pas non plus. Cependant méfiez vous de certains pièges où on pense que le getter ne renvoi qu'une variable interne ! ce n'est pas toujours vrai ! Le getter peu faire beaucoup de chose avant de vous renvoyer le résultat. Les performances de votre application peuvent donc en pâtir, mais vous pouvez carrément avoir des "bugs". Un bon exemple avec le SPWeb.RootFolder : Scénario : Vous devez modifier la WelcomePage d'un SPWeb par code. Par défaut on aurait tendance à faire ça : SPWeb w = ... // je ne m'attarde pas sur la récupération du SPWeb ...
Cas un peu particulier mais tout de même ennuyeux si :
- vous avez créé une application web SharePoint en utilisant un host header spécifique (par exemple www.bewise.fr )
- pour tester vous avez modifié votre fichier host sur le serveur en lui indiquant que www.bewise.fr pointe sur 127.0.0.1
- le serveur s'appelle MONSERVEUR par exemple (différent du nom de domaine justement)
et bien vous serez dans l'impossibilité d'accéder aux sites de cette application. Vous aurez en boucle un prompt pour fournir login et mot de passe. Ceci est dû à une sécurité de IIS depuis la version 5.1 qui ...
Vous passez le SP1 de SharePoint (sur une machine où vous avez Visual Studio 2010 !? votre serveur de développement par exemple), et ou le SP1 d'un langage pack. Et bien vous aurez surement cette erreur: An unhandled exception ('System.Security.Cryptography.CryptographicException') occurred in OWSTIMER.EXE [3004]. Le mieux est de cliquer sur « No » et donc ne cherchez PAS à debugger le processus, laissez juste le continuer jusqu'au bout ! et tout ce passera bien ! ...
Le but du jeu est de faire tourner une application Silverlight (v4) accompagnée de son site web ASP.Net et de ses services WCF Ria sur un réseau local avec authentification Windows. Jusque là rien de bien compliqué me diriez vous. SAUF que nous voulions profiter de la gestion de profils du membership ASP.Net (totalement standard et donc rien à développer, c'est pratique tout de même) et donc pour cela le plus simple est de faire une authentification par formulaire. De plus nous ne voulons évidement pas que les utilisateurs du réseau local aient à s'identifier dans un formulaire quelconque (ASP ou Silverlight) étant donné qu'ils l'ont déjà fait sur leur session Windows à leur arrivée au ...
Je suis tombé sur une erreur hier, après avoir installé une nouvelle ferme et configuré tous les services “ à la main ” : ”An error has occurred with the Form Service there is a misconfiguration of the Microsoft SharePoint State Service”.
En effet, après avoir installé SharePoint Server 2010, je n’ai pas voulu utiliser l’assistant de déploiement des services (ferme de production) et donc créer tous les services grâce à l’administration centrale de SharePoint ou PowerShell.
Après avoir créé et déployé mon Workflow dans SharePoint ...
Il peut arriver, qu’après avoir configuré votre service de recherche dans SharePoint 2010 Server, vous tentiez une recherche… qui remonte des documents Word 2003 ou 2007 et que dans la page de résultats, le titre de ce document soit : “Titre”.
C’est en fait une optimisation cachée du moteur de recherche de Search Server… qui remonte les quelques premiers mots du document ou une mauvaise métadonnée du document !
Pour corriger ceci :
Ouvrir l’éditeur de registre du serveur hébergeant le service de recherche : Démarrer > Exécuter > Regedit
Chercher la ...
Dans un rapport, lorsqu’on utilise un paramètre multiple dans une requête, le fonctionnement n’est pas le même suivant si le paramètre multiple contient une ou plusieurs valeurs.
Si on a dans le rapport la requête
select * from MaTable where ID in ( @MonParametre )
Si on a plusieurs valeurs, le paramètre est directement remplacé dans la requête par la liste des valeurs, et la requête exécutée est :
select * from MaTable where ID in ( 1 , 2 , 3 )
Au contraire si on a une seule valeur, le paramètre n’est plus ...
Aujourd'hui encore pour développer des solutions SharePoint (2010) nous avons besoin de développer directement sur un serveur où SharePoint est installé. En général nous faisons une installation avec un compte administrateur et les développements sont fait avec ce compte et cela suffit. Pourtant par moment on souhaite donner accès à différents développeurs cette plateforme de développement. Cela nécessite donc de donner des droits aux différents comptes utilisateurs de ces développeurs. On pourrait d'ailleurs penser que de les ajouter au groupe "administrateurs " du serveur suffirait mais ce n'est pas le cas. Vous allez rapidement tomber sur des messages du type : "error occured in ...
Vous avez une listbox et vous voulez que les éléments soient « strech ».
On aurait tendance à spécifier HorizontalContentAlignment ="Stretch" mais non… car il faut indiquer que chacun des items à un contenu stretch pour cela on leur spécifie un style comme ceci ItemContainerStyle ="{ StaticResource HorizontalItemStretch }" que l’on définit par exemple au niveau des ressources de la page soit :
< phone : PhoneApplicationPage.Resources >
< Style x : Key ="HorizontalItemStretch" TargetType ="ListBoxItem">
...
Le type DateTime en .net permet de définir une date et une heure, mais ne tient pas compte des fuseaux horaires. Lorsqu'on veut gérer différents fuseaux horaires, il va falloir effectuer des conversions. Pour ça, deux possibilités : On peut utiliser la classe DateTimeOffset, qui représente une date/heure UTC (au méridien de Greenwich), et qui permets de récupérer l'heure locale avec une propriété LocalDateTime La méthode TimeZoneInfo.ConvertTime permet de convertir une heure vers l'heure UTC ou l'heure locale : TimeZoneInfo.ConvertTime(theDate, TimeZoneInfo.Utc) TimeZoneInfo.ConvertTime(theDate, TimeZoneInfo.Local)
Comme beaucoup, vous êtes maintenant passé aux environnements 64 Bits sur les postes clients avec plus ou moins de succès.. Moins de succès parce que l'on se rend compte que quelques fonctionnalités ne sont pas toujours opérationnelles Parmi celles que l'on a tous adoptées en tant qu'utilisateurs SharePoint est la possibilité de pouvoir éditer du contenu SharePoint en mode "Excel" ! Et lorsque que l'on a tout en x64, on est en face de l'erreur suivante : Cela se résoud au final assez simplement : Il suffit d'installer sur votre poste "2007 Office System Driver: Data Connectivity Components " qui se trouve ici : ...
J'avais fait récemment une KB sur cette exception levée par le modèle objet de SharePoint lorsque le host est lancé en x86 et accède à un SharePoint qui est en x64.
Aujourd'hui j'ai constaté avec mon collègue Sébastien Reynier que nous avions cette exception levée (exactement le même message : "The Web application at http://localhost/sites/collec1 could not be found. Verify that you have typed the URL correctly. If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application") mais pour une toute autre raison !
Cette raison : ...
Parfois sur une page contenant du Silverlight, l’application Silverlight ne s’affiche pas directement au chargement de la page, mais seulement lorsqu’on passe le Curseur de la souris dessus.
C’est un problème qui peut arriver lorsqu’on utilise IE6 ou le mode de compatibilité IE6 sur IE7 , et que la balise div contenant le contrôle Silverlight est à l’intérieur d’un tableau.
Pas de solution miracle concernant ce problème, mais il existe une solution de contournement : rajouter dans la page web un lien vers une feuille de style (la plus légère possible) juste ...
Lorsqu'on crée un handler asp.net, il faut savoir que par défaut il n'a pas accès à la session. L'objet Session est bien accessible, mais il vaut null, ce qui nous causera une erreur si on essaye de l'utiliser : Pour pouvoir utiliser la session dans notre handler, il faut qu'il implémente l'interface IRequiresSessionState. Enfin, implémenter est un bien grand mot, puisque cette interface ne définit aucune méthode : il s'agit juste d'une interface marqueur qui permet de spécifier que notre handler a besoin d'accéder à la session. 1: public class HandlerUsingSessionState : IHttpHandler , System.Web.SessionState.IRequiresSessionState
2: {
3: ...
J'ai rencontré un problème avec des manipulations de solutions entre différents serveurs TFS. Le scénario est le suivant : - je suis chez un client, je branche mon PC sur leur réseau - je me connecte à leur serveur TFS - je le connecte à un de leur projet - je mappe ce projet sur un dossier local de ma machine - je fais un getlatestversion - je supprimer le serveur TFS de mon client de la liste des serveur TFS de mon Visual Studio - je rentre à Bewise - j'ouvre le projet et là j'ai une belle fenêtre m'indiquant que le serveur TFS n'est pas accessible :
- Je lui dit que je veux me débrancher ...
Lorsque vous utilisez le modèle objet de SharePoint il vous est sans doute arrivé d'utiliser cette méthode :
SPSecurity.RunWithElevatedPrivileges
Qui vous permet d'exécuter un bloc de code sous l'identité du compte système.
ATTENTION, PAS DE CONFUSION !!!
Le code exécuté va l'être avec l'identité de l'exécutable hôte !
Donc vous êtes dans le contexte d'un webpart par exemple, l'utilisateur est sans doute impersonifié, donc cette méthode vous permet d'utiliser le compte du pool d'application (qui bien souvent est le compte système) plutôt que celui de ...
Symptôme : Vous utilisez le modèle objet (serveur) de SharePoint (2007 / 2010) et à la construction d'un objet de type SPSite vous prenez une exception de type FileNotFoundException Avec un message de ce genre : The Web application at http://localhost/sites/collec1 could not be found. Verify that you have typed the URL correctly. If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application. Et pourtant vous savez pertinemment qu'il existe bien une web application à cette url !! Alors il est fort possible que vous ayez un soucis 32/64 bits ! En effet le modèle objet de SharePoint utilise ...
Sans étaler les nombreux avantages de WinMerge, pour ceux qui voudraient se détacher de l'outil historique et utiliser WinMerge, voici la configuration à adopter :
/x /e /ub /wl /dl %6 /dr %7 %1 %2
/x /e /ub /wl /dl %6 /dr %7 %1 %2 %4
Contexte : j'ai un service Windows qui tourne en permanence à la recherche de fichiers xml dans un dossier. Ces fichiers xml contiennent des données qui sont exploitées pour générer un mail, éventuellement avec des pièces jointes.
Les dites pièces jointes sont placées dans un sous-dossier de l'exe.
On constate que tous les fichiers envoyés par le système, en tant que pièce jointe, sont ensuite verrouillés par le process (impossible à supprimer tant qu'on a pas stoppé le service).
La Raison : La classe MailMessage est Disposable et j'ai oublié d'utiliser un using
...
Le but est de faire l'équivalent d'un Contains (ou SubString), mais sur des chaines qui contiennent à la fois des accents et des majuscules/minuscules et que l'on souhaite ignorer lors de la comparaison:
la recherche de "aée" dans la chaine "zAeEb" doit renvoyer vrai
la recherche de "AeE" dans la chaine "zàéEb" doit aussi renvoyer vrai
La technique consiste à
tout d'abord normaliser les chaînes en Unicode afin que les caractères accentués soient codé par le "tuple" code de caractère standard + code d'accent.
puis de supprimer tout les caractères hors de la tranche des ...
Si vous utilisez un projet de setup web sous VS 2010 pour installer un site en framework 2.0 ou 3.5 (principalement dans le cas d’un projet migré depuis VS 2008, mais aussi pour les projets directement créés sous VS 2010), à l’exécution du setup sur le serveur, vous avez de grandes chances de voir apparaître un message indiquant que la clé de base de registre « Software/Microsoft/ASP.NET/4.0.30319.0 » est introuvable (si le framework 4 n’est pas installé).
La raison vient d’un nouveau paramètre des projets web setup, qui est plutôt bien planqué. Il ...
Le tips du jour ! Vous devez copier/coller une solution VSTO pour, par exemple, faire un nouveau projet qui reprend pas mal de code d'un autre.
Oui c'est possible !
Evidement il faut renommer pas mal d'éléments dans votre projet pour ne pas avoir de conflit avec le projet originel.
MAIS il faut aussi que la solution VSTO soit identifiée avec un nouvel Guid. Sinon vous ne pourrez pas installer sur les postes clients les 2 solutions (l'ancienne et la nouvelle). Pour cela la procédure est simple :
Faite un premier publish de votre nouvelle solution afin que VS génère le fichier VSTO et mette à jour le fichier csproj.
clic ...
Pour gérer la localisation dans une application Windows Phone, plusieurs étapes à suivre :
1- Utiliser des fichiers de ressources. Un fichier par langue, avec le nom de la culture dans le nom du fichier.
2- Définir dans les propriétés du projet la culture par défaut (celle correspondant au LocalizedStrings.resx) Dans Application, AssemblyInformation, sélectionner le « neutral language »
3- Fermer le projet, et éditer le csproj. Chercher et y ajouter la liste des cultures supportées par l'application Il faut mettre la liste des cultures supportées, séparées par des ...
Si vous avez un ensemble de projets Visual Studio à convertir vers Visual Studio 2008 ou Visual Studio 2010, vous pouvez le faire simplement par un script powershell :). Attention : selon votre installation (notamment x86/x64), le chemin de visual studio dans le script est peut-être incorrect.
Vers Visual Studio 2008
$dir = get-childitem . -recurse
$list = $dir | where { $_ .extension -eq ".sln" }
foreach ( $f in $list ) {
$args = "/upgrade {0}" -f ( $f .fullname )
$p = [ Diagnostics.Process ] ::Start ( 'C:\Program ...
Dans l'inconscient général des développeurs .NET, IndexOf se doit d'être plus rapide que les expressions régulières : absolument pas, les expressions régulières seront nettement plus rapide.
Je vous conseille si possible de ne plus utiliser IndexOf dans vos programmes pour systématiquement utiliser les expressions régulières.
Contactez-moi si vous arrivez à trouver un cas qui prouve le contraire.
Si jamais vous recevez cette erreur avec Team Explorer lorsque vous cherchez à visualiser les WI avec Excel :
Deux choses sont alors à vérifier :
1. Il faut parfois réactiver l'addin dans excel :
2. Sinon, il faut aussi parfois lancer une réparation de l'addin Team et vérifier ensuite s'il est bien « enable ».
Pour la réparation : http://msdn.microsoft.com/en-us/teamsystem/bb693326.aspx
.Pour rendre l'addin « enabled » ( http://social.msdn.microsoft.com/Forums/en-US/tfsgeneral/thread/cec8d4fe-83e3-4965-b7fb-9434e1f83774 ) :
· Using Windows Vista or Windows 7 and Office 2007, ...
Si vous avez cette erreur au déploiement :
L'erreur système suivante s'est produite : .
The following system error occurred : .
Ca tourne autour d'un problème de sécurité (SID). Il faut juste supprimer (ou corriger) les attributions de rôle pour ne pas pointer sur des utilisateurs "fantômes" (ie. hors du domaine).
Voici un excellent post explicant la manière d'obtenir des applications WPF performantes malgré un accès distant via Remote Desktop :
http://blogs.msdn.com/jgoldb/archive/2010/02/27/optimizing-visual-studio-2010-and-wpf-applications-for-remote-desktop.aspx
Regardez si VS ne vous a pas ajouté un petit encoding :
Dans votre fichier de configuration. Si c'est le cas, virez le.
Dans des cas assez particuliers (notamment faire marcher le SmoothStreaming sur du AZURE) vous devez modifier la configuration du répertoire $root du Blog Storage.
Sauf qu'aucun outil ne fonctionne.
A l'exception de Cloud Storage Studio qui permet d'éditer directement les règles de sécurité de votre $root.
Voilà un outil qui vous sauvera peut être.
ça peut servir....
http://sqlblog.com/blogs/john_paul_cook/archive/2008/03/23/using-wireless-with-hyper-v.aspx
A la fin de la procédure j'arrive bien à me pinger du host vers la VM ou de la VM vers le host en utilisant les IP assignés à la carte Wifi
Par contre j'arrive pas à avoir le DNS qui marche, donc pas d'internet sur la VM alors que le host ça marche :(
Petit challenge personnel: il y a quelques jours, on me demande comment mettre le contenu d'un répertoire dans une table, en base de données (pour préparer une démo à la BDC).
SET MODE_MAUVAISE_FOI ON
Evidemment, étant entouré de développeurs, tout le monde pense à une application console avec de l'Entity Framework ou du Linq2SQL. Mais le temps de se décider, j'avais implémenté la solution avec SSIS, outil parfaitement adapté pour l'intégration de données ;).
SET MODE_MAUVAISE_FOI OFF
La piste suivie est une tâche de DataFlow qui s'appelle Import Column qui sert ...
Objectif : Activer le SSL sur Reporting Services 2008
Solution :
1- Créer, importer et binder un certificat dont le sujet est le nom du host de ReportingServices (cf. la KB en pj)
2- Configurer RS via ReportingServices Configuration Manager en sélectionnant le certificat créé
3- RS est censé faire le binding avec le certificat sur l'ip choisie, cette opération peut être vérifiée avec netsh, si besoin le binding peut être fait manuellement avec cet outil.
L'outil CLR Profiler v2 porte le nom très trompeur de : « CLR Profiler for the .NET Framework 2.0 »
Si vous souhaitez faire de l'encodage WMV vous allez devoir utiliser le Windows Media Format SDK ou un wrapper .NET comme : WindowsMediaLib.
Entre autre vous aurez surement à lister et afficher les propriétés des codec installés sur un poste.
Pour récupérer les propriétés des codec WMV installés, on utiliserait naïvement cette syntaxe :
1: IWMMediaProps props = .;
2:
3: int formatSize = 0;
4:
5: props.GetMediaType( null , ref formatSize);
6:
7: amMediaType = new WindowsMediaLib.Defs.AMMediaType();
8:
9: ...
Quel est la difference entre le type Numeric et Decimal en T-SQL ?
Aucune ! http://awurl.com/yVrcCs3aD
Alors pourquoi existe-t'il 2 types identiques ?
Parce que dans la norme ISO SQL-92, il est définit que le type décimal doit avoir une précision aussi précise que celle définie lors de la déclaration du type alors pour que le type numeric celle-ci doit être au moins aussi précise que celle définie lors de la déclaration du type (=elle peut être plus précise). Certains SGBD comme SQL Server et Sybase considère donc ces deux types exactement de la même ...
Printf(« %I64d », value) ;
Problème
Lors du déploiement d'une dll C++ avec la CLR active, le système indique qu'il ne peut pas charger la dll, et loge l'erreur dans l'EventLog : Source SideBySide, Event ID 34.
A noter que le problème n'intervient pas sur toutes les plateformes (Windows XP et Server 2003 sont connues pour ne pas fonctionner correctement).
Source du problème
Le problème vient de VS 2008 SP1 qui se plante lors de la génération du manifest.
En gros le manifest permet de binder votre dll à la CLR et ce (excusez moi du terme) poireau compile bien avec la runtime SP1 mais positionne l'ancienne runtime dans le fichier de ...
Si vous avez activé la compression (statique et/ou dynamique) sur un site web et que vous souhaitez voir le résultat, vous pouvez utiliser cet outil en ligne :
http://www.seoconsultants.com/tools/compression
Il vous permet de voir si la compression est effectivement activée, et le pourcentage gagné si celle-ci fonctionne.
Si jamais vous avez le besoin de créer un service Windows qui doit marcher uniquement sur machine 64bits, ou utilise des DLL 64bits (comme celles d'OCS) et que vous créez un projet de Setup pour votre déploiement, vous courez vers de grosses déconvenues...
Le problème est le suivant:
Pour enregistrer le service sur la machine vous devez référencer l'output du projet de service dans les custom actions. Jusque là tout va bien. Mais à l'exécution du package d'install, vous aurez le droit à une belle exception de type BadImageFormatException indiquant que l'exécutable n'est pas compatible avec la ...
Et ceci sans images et en full CSS grâce à Google Fonts API :
http://net.tutsplus.com/tutorials/html-css-techniques/quick-tip-google-fonts-api-youre-going-to-love-this/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+nettuts+(NETTUTS)
Si comme moi, vous venez d'installer Office 2010 et que maintenant l'édition de pages aspx fait freezer Visual Studio 2008, il existe une solution.
Il faut aller dans les programmes installés, repérer « Microsoft Visual Studio Web Authoring Componant », et faire une réparation du composant (en faisant change, puis repair dessus).
Plus d'infos sur cette page :
http://blogs.msdn.com/webdevtools/archive/2010/04/19/upgrade-or-uninstall-of-office-2007-might-cause-vs-2008-web-designer-to-hang.aspx
A installer sur votre VS 2010 :
Depuis le menu Tools ->
Ou depuis l'adresse : http://visualstudiogallery.msdn.microsoft.com/en-us/d0d33361-18e2-46c0-8ff2-4adea1e34fef
(où vous trouverez le détail)
Entre autre, une jolie nouveauté :
Avant :
Après :
Ci-joint un test de performance proposé pour comparer EF, Linq, Datatable en 3.5 et 4.0.
http://toomanylayers.blogspot.com/2009/01/entity-framework-and-linq-to-sql.html
A noter: ce que personne ne connait (pré-génération des vues).
http://msdn.microsoft.com/en-us/library/cc853327.aspx
Si un jour vous avez à convertir une centaine de solutions d'une vieille version de Visual Studio vers VS 2008 ou 2010, faites comme moi, écrivez un script Powershell J
Vers Visual Studio 2008
$dir = get-childitem . -recurse
$list = $dir | where { $_ .extension -eq ".sln"}
foreach ($f in $list) {
$args = "/upgrade {0}" -f ($f.fullname)
$p = [Diagnostics.Process]::Start('C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe', $args )
$p.WaitForExit()
write-host $f.name " solution converted"
}
Vers Visual Studio 2010
$dir = get-childitem . -recurse
$list = $dir | where { $_ .extension -eq ...
Pour ceux, qui ont installé Biztalk Server 2009 sur leur poste en utilisant SQL Server 2008 :
- Biztalk 2009 n'est pas compatible avec SQL 2008 R2 ; pour faire cohabiter les deux, vous avez à disposition la Beta de Biztalk 2010.
Petite KB pour le développeur SSIS qui sommeille en vous.
Contexte
Import d'un fichier plat contenant un champ de type Unique Identifier.
Si votre GUID apparait comme ça dans votre fichier plat :
Colonne 1 ..
...
When I'm not playing with Silverlight and Virtual Earth, I've been figuring out MVC (thanks to Scott , Scott and Phil ). However pretty early on I hit a weird error in Visual Studio 2008 when trying to 'open' a database via the Server Explorer : The database 'C:\SOME\FOLDER\MYDATABASE.MDF' cannot be opened because it is version 655. This server supports version 612 and earlier. A downgrade path is not supported.
Background
I had created that database in Visual Studio 2008 (File ? Add New Item ? SQL Server Database) and now it wouldn't let me open it! What I had done is opened, edited and closed the database file using SQL Server 2008 Management Studio. Shouldn't be a ...
Je l'avais déjà vu il y a quelques temps et j'ai eu beaucoup de mal à retrouver l'info, du coup une petite KB pour ça.
Mon souci : je veux faire des tests de types marqués comme Internal.
Dans le fichier AssemblyInfo contenant les types internal, il suffit d'ajouter l'attribut suivant :
[assembly:InternalsVisibleTo( "nomDeLassembly" )]
Ca faisait longtemps que je n'avais pas fait de KB sur les TU ! Et je suis certain que mon AMI Alain en est friand.
Alors voilà, j'ai un projet de test qui me permet de tester un provider. Pour ma part, j'ai préféré écrire une seule classe de test, et fonctionner en classe partielle pour la lisibilité du code. J'ai donc ceci :
Au premier abord ça fait un peu velu de n'avoir qu'une seule classe de test, mais on s'y retrouve très bien comme ça. Et au moins tout les tests bénéficient du même contexte d'exécution, ce qui est l'idéal pour tester mon provider.
Mon problème ...
Si en clientèle vous avez des questions sur les performances de WCF par rapport à ces WSE, Remoting, voici un élément de réponse :
http://msdn.microsoft.com/en-us/library/bb310550.aspx
Je pense que ça se passe de commentaires.
ASP.NET MVC 2 est arrivé avec une nouveauté très pratique : la validation de données par DataAnnotation. Le principe : on définit sur notre modèle les contraintes à vérifier, et MVC se charge de faire les vérifications (côté serveur uniquement dans la première preview, et normalement une vérification client devrait être générée à l'aide de jQuery dans les prochaines versions).
Par exemple, j'ai la classe suivante :
Je vais pouvoir lui ajouter les règles de validation de cette manière :
Par contre, un problème se pose lorsque ...
WPF fournit quelques converters de base pour nos contrôles dont 2 particulièrement pratiques
BooleanToVisibilityConverter
Représente le convertisseur qui convertit des valeurs Boolean en des valeurs d'énumération Visibility, et vice et versa.
http://msdn.microsoft.com/fr-fr/library/system.windows.controls.booleantovisibilityconverter.aspx
Alternationconverter
Vous pouvez l'utiliser pour lier une propriété à des valeurs de remplacement. Par exemple, si vous souhaitez que l'arrière-plan des éléments dans ListBox affiche en alternance les couleurs bleues et bleu-clair.
...
Pour info la dernière version de Wireshark ne s'installe pas directement sur 2008R2 64b (probablement 7 aussi) suite à refus par WinPcap de s'installer.
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3546
La solution est de l'installer en mode de compatibilité 2008 :
Comment faire une application WP avec VS2010 ??
Voici le site officiel :
http://windowsclient.net/wpfdesigner
Exemple des fonctionnalités pour WPF :
http://windowsclient.net/wpfdesigner/articles/first-wpf-application.aspx
Vous voulez cibler l'affichage d'un webpart ou d'un élément d'une liste en vous basant sur un groupe SharePoint et non pas sur une audience ? Et votre groupe référence des groupes AD et pas des utilisateurs AD ?
Cela ne fonctionnera pas, à moins d'appliquer ce hotfix : http://support.microsoft.com/kb/942819/en-us
Si, comme moi, vous avez un jour à convertir une 100aine de solutions d'une vieille version de Visual Studio vers VS 2008 ou 2010, faites comme moi, écrivez un script Powershell J
Vers Visual Studio 2008
$dir = get-childitem . -recurse
$list = $dir | where { $_ .extension -eq ".sln"}
foreach ($f in $list) {
$args = "/upgrade {0}" -f ($f.fullname)
$p = [Diagnostics.Process]::Start('C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe', $args )
$p.WaitForExit()
write-host $f.name " solution converted"
}
Vers Visual Studio 2010
$dir = get-childitem . -recurse
$list = $dir | where { $_ .extension -eq ...
Pour les fans de Code Analysis que vous êtes :
Vous avez la possibilité de retirer un message Code Analysis pour une classe ou une assembly :
Pour une classe :
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Design" , "CA1034" )]
Pour l'assembly :
Il suffit de décocher la case :o)
J'importe des données d'un fichier Excel en utilisant un Excel Source. Je me suis aperçu qu'une des colonne ne contient que des valeurs null dans le lot SSIS alors que cette même colonne contient des valeurs dans le fichier Excel source.
Le truc c'est que par défaut le Excel Source consulte les 8 premières lignes pour déterminer le type de données de chaque colonne et si les valeurs sont Null toutes les autres valeurs de cette colonne seront Null.
Donc pour éviter ce comportement par défaut il faut modifier la propriété ConnectionString de l'Excel Connection Manager associé et remplacer ...
Pourquoi peut-on avoir besoin de calculer l'angle de deux vecteurs ? Voilà le cas typique, je veux faire tourner un élément graphique avec ma jolie souris.
Bon sinon voilà comment faire pour calculer l'angle former par les vecteur OA et OB. La formule c'est :
Angle = u.v / ( ||u||*||v|| ), où u est le vecteur OA et v le vecteur OB.
Et en C# ca donne :
int AngleEntresDeuxVecteurs(Point pointO, Point pointA, Point pointB)
{
PointF u = new PointF(pointA.X - pointO.X, pointA.Y - pointO.Y);
PointF v = new PointF(pointB.X - pointO.X, pointB.Y - pointO.Y);
// formule = u.v / ( ||u|| * ||v||)
double cosa = ( double ...
Afin de vous éviter de passer pour un con car vos stagiaires n'arrivent pas à se connecter sur votre serveur Sql 2005 sur Vista (et peut être aussi sur XP), voici la méthode pour ouvrir tout ce qu'il faut pour ça : 1) Activer les connexions remote : a. Lancer SQL Server 2005 Surface Area b. Cliquer sur le menu Surface Area Configuration for Services And Connections c. Sur chacune de vos instances, cliquer sur Database Engine -> Remote Connections . Là Sélectionnez, Using both TCP / IP and named Pipes 2) Activer le Sql Browser : a. Toujours dans le Surface Area Configuration , Cliquer SQL Server Browser , puis Service b. Mettre ...
Si vous installez un WSS3 en mode « mono serveur » c'est-à-dire pas dans une ferme, l'installeur ne vous laisse pas choisir les paramètres de config telle que la base de donnée à utiliser. Il crée automatiquement une instance nommée, et planque toute la bdd de sharepoint dedans.
Pour pouvoir se connecter via le SQL management studio, il faut rendre cette instance visible :
- Lancer l'outil SQL configuration manager
- Click droit sur le noud de nom « .#SSEE »
- Changer « Hide Instance » à false
De plus, pour se connecter à distance, il ne faut oublier de passer par le « SQL ...
Voici une petite astuce assez méconnue dans le domaine « email ».
Il nous arrive parfois d'envoyer « par erreur » un message email que l'on voudrait retirer. Le cas le plus rencontré c'est celui de l'email auquel on a oublié d'ajouter les attachements.
Le cas n'est pas sans espoir et ce petit KB vous en présente la solution. Cette astuce est valable pour la combinaison serveurs Exchange + Outlook (c'est le cas à Bewise). Pour ceux qui ne savent pas ce qu'est un serveur Exchange . uhm . c'est pas grave, sachez seulement que cette méthode risque de ne pas fonctionner a chaque fois, mais c'est quand même bien ...
Lorsqu'on charge un contrôle avec une Commande (cf l'exemple ci-dessous) à la volée depuis un autre thread (via un Dispatcher), vous avez 95% de chance que l'évènement CanExecute ne soit pas appelé. Conséquence le bouton est grisé tant que vous ne cliquez pas dessus !
Personnellement j'ai eu le problème dans l'évènement WorkCompleted d'un BackgroundWorker.
J'ai eu beau essayer de comprendre la séquence d'appel qui provoque ca avec Reflector, mais ça à priori ça ...
Une application ClickOnce peut avoir des prérequis, c'est-à-dire des programmes qui doivent être installés avant que l'application puisse démarrer.
Il peut s'avérer utile de créer son propre prérequis. Voici une procédure simple qui permet de faire ça en douceur :
Créer un MSI qui permettra d'installer votre prérequis
Il faut ensuite définir le prérequis. Tout ça se fait dans le répertoire [Visual Studio]\SDK\2.0\BootStrapper\Packages\MonPackage
Les choses qu'il faut mettre dans ce répertoire :
i. Un fichier product.xml. Ce fichier décrit ...
Si vous avez besoin de passer une date dans une requête SQL, et que vous n'avez AUCUNE possibilité de passer un type DATETIME avec ADO.Net, voici une petite astuce qui vous enlèvera une grosse épine du pied, à savoir les problèmes de culture de date sur votre serveur SQL cible (JJ/MM/AAAA ou MM/JJ/AAAA)
Par l'exemple, si vous ne savez pas si vous devez faire ( pour une date du 1 er Décembre 2006):
Insert into MaTable(ID, DateDeb) Values(10, '01/12/2006')
OU
Insert into MaTable(ID, DateDeb) Values(10, '12/01/2006')
ALORS
Utilisez la forme concaténée de date Sql.
Cette forme est : 'AAAAMMJJ' soit dans ...
Si vous avez cette erreur lors de la compilation d'un projet utilisant Web Deployment Project, c'est assez énervant parce qu'on a aucune information sur ce qui a pu la causer. Dans ce cas, le problème vient du fait qu'il doit y avoir plusieurs classes ayant le même nom dans votre projet web, même si elles sont dans des répertoires différents.
Maintenant quand on a un site assez gros, c'est difficile de savoir quels sont les classes qui ont le même nom. Voici comment les trouver plus facilement :
Allez voir les options de Visual Studio (Tools/Options)
Positionnez-vous sur « Projects and Solutions », et sur « Build ...
Le ValidateRequest, bien que ne remplaçant pas une sécurisation correcte du code par le programmeur, est quand même un formidable atout pour avoir un site web plus sûr
En bloquant toute requête contenant quelque chose qui peut ressembler à de l'injection de code html, il peut poser problème si on veut justement autoriser l'utilisateur à envoyer du code html, dans ce cas il faut le désactiver en ajoutant ValidateRequest="false" dans la directive de page. Le soucis maintenant, c'est qu'on se prive totalement de la validation pour cette page, alors qu'on pourrait vouloir la désactiver uniquement dans certains cas, et il ...
http://futur2.bewise.fr/rd/km/Lists/Tips%20%20Tricks/DispForm.aspx?ID=1
Si une exception est levée durant l'opération asynchrone du BackgroundWorker, le composant la récupère et ne la lève pas.
Par exemple, le code suivant ne lèvera aucune exception :
private void bgWorker_DoWork( object sender, DoWorkEventArgs e)
{
throw new ApplicationException( "Niaaa" );
}
Toutefois, vous pouvez savoir si une exception a été levée au niveau de l'évènement RunWorkerCompleted grâce à la propriété Error de l'EventArgs :
private void bgWorker_RunWorkerCompleted( object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null ...
Si vous avez ce genre d'erreur lors du runtime de votre application :
error CS0433: The type 'blablabla' exists in both ..
Voilà la solution :
< compilation batch ="false" >
dans votre web.config
Source : http://www.codethinked.com/post/2008/01/Visual-Studio-2008-New-Multi-Threaded-Debugging-Feature.aspx
Franchement ça poutre !
So, I was working in Visual Studio 2008 today (yeah, I know what you are thinking. I am pretty fancy) and I noticed this little bugger.
Hmmmm, my first thought was that it was the "add wavy lines" feature that I had been hearing so much about. So I clicked it. I mean, who wouldn't want to add some nice wavy lines to their software? To my dismay though, this is all that happened:
You see? No wavy lines, it just was now highlighted. But in doing so I inadvertently hovered over it a little too long.
Ooooh, ...
Pour résoudre les problèmes de checkin comments policies, il suffit d'installer les Team Foundation Power Tools (ou de prendre le temps de lire le message d'erreur).
.
Les expressions régulières c'est très bien, mais il y a un gros manque dans la syntaxe : il n'existe pas de façon simple de chercher une expressions qui ne contient PAS une certaine chaîne de caractères.
Si on veut refuser un seul caractère 'a', on fait un :
[^a]*
Mais si on veut refuser la chaîne « ab », il faut :
- Prendre tous les caractères différents de 'a'
- Prendre tous les caractères 'a' non suivis d'un caractère 'b'
Ce qui nous donne :
([^a]|a[^b])*
[Attention, le caractère ^ signifie « tout sauf », mais uniquement dans une ...
Ou comment prendre 2 heures.
Soit la classe suivante :
public class Item
{
public string this [ string index]
{
get { return "" ; }
set {}
}
}
Cette classe ne compile pas avec cette erreur sur le « this » : Item : member names cannot be the same as their enclosing type
Alors d'où vient le problème ? Le compilateur lorsqu'il rencontre un indexer (le this) crée une méthode qu'il appelle Item (gros boulet) et forcément ça ne marche pas avec le nom de la classe.
Seule solution, renommer la classe.
Oui, je sais la vie est moche.
Lorsque l'on dispose d'un serveur Windows 2003 en US et que la langue par défaut est l'anglais, on peut être embêté pour saisir un nom d'utilisateur et/ou un mot de passe sur la fenêtre d'identification car on doit saisir les informations en QWERTY.
Si on effectue les changements qui vont bien dans les options de régionalisation du serveur pour mettre la langue par défaut en français, pas de problème durant la session.
Par contre si l'on redémarre le serveur celui repasse en QWERTY sur la fenêtre de login.
Comment faire ?
Apprendre toutes les touches en QWERTY
Faire Alt gauche + Shift sur la ...
J'ai été confronté à la problématique suivante :
Calculer l'espace requis pour enregistrer une ligne dans une table SQL Server 2000.
La méthode simple de cumuler le nombre bytes dévolu à chaque type de données peut sembler bonne, mais imaginons la création de deux tables :
CREATE TABLE testtablesize1 (col1 varchar (8000), col2 varchar (35))
Message:
The command(s) completed successfully.
CREATE TABLE testtablesize2 (col1 varchar (8000), col2 varchar (36))
Message:
The total row size (8061) for table 'testtablesize2' exceeds the maximum number of bytes per row (8060). ...
Il se peut qu'au détour d'une manipulation vous vous retrouviez avec un simple "File Not Found." dès que vous souhaitez accéder à votre site sharepoint (WSS v3 ou MOSS 2007). Cette page n'a pas le look classique des erreurs sharepoint ni des erreurs classiques 404.
La solution pour résoudre ce problème consiste tout d'abord à regarder que vous n'ayez pas un xmlns="bla bla" dans votre web.config. Si oui supprimez-le (l'attribut pas le fichier :). Sachez que l'éditeur de web.config de IIS aime bien rajouter la déclaration de namespace XML.
Ensuite, si ça n'y fait rien, il faut vérifier que tous les fichiers ...
Attention le sujet ne dit pas tout. Nous somme dans le cas suivant : j'ai une classe abstraite Fenetre, et 2 classes FenetreVue et FenetreMiseEnPage qui héritent de Fenêtre.
J'ai un objet List que je veux sérialiser en xml. Vous allez me dire rien de plus simple, on va écrire un truc propre et générique du style :
internal static class BusinessHelper
{
public static string Serialize(T objectToSerialize)
{
XmlSerializer serializer = new XmlSerializer( typeof (T));
StringBuilder serializeValue = new StringBuilder();
using (StringWriter sw = new StringWriter(serializeValue)) ...
Pour gérer le scrolling en Windows Forms vous avez deux possibilités :
Soit utiliser un contrôle qui dérive de ScrollableControl et positionner la propriété AutoScroll à true
Soit tout refaire à la main (et oui, le framework ne propose aucune alternative [à ma connaissance]).
Problème : le comportement du ScrollableControl n'est pas toujours celui qu'on veut, pire il peut provoquer différents bugs au niveau de nos applicatifs !
Point 1 : la molette de la souris
Si vous utilisez votre molette sur un contrôle avec la propriété AutoScroll à true, le ...
La problématique
Les outils de génération de proxy pour les WebService génèrent des classes squelettes (localhost.MaClasse) qui sont dans certains cas un peu casse pied.
L'exemple
Vous avez une WebMethod qui ressemble à ceci :
public MyNamespace.Personne GetPersonne()
{
.
}
La classe Personne est définie dans une assembly commune : MyNamespace.
Lorsque vous ajoutez une référence Web vers ce WebService, l'outil de génération de proxy vous génère une nouvelle classe Personne dans le namespace de la référence web : localhost.Pesonne.
...
Si vous avez installé Visual Studio 2008 (bon ça réduit pas mal les personnes ciblées pour le moment) et que vous souhaitez faire du WCF (Bn ok, là aussi ça réduit l'effectif. Bon Fred, cette KB est pour toi donc J), voici une première astuce.
Supposons que vous souhaitiez créer un projet classique Windows Forms (dans mon cas, projet supposé jouer le rôle de Host dans une archi WCF) et que vous souhaitiez éditer le fichier de configuration via l'outil WCF Configurator ; , et bien vous risquez d'être surpris de ... ne pas voir le menu associé, lors du clic droit sur votre fichier de ...
Problème : En asp.net, on a un bouton sur lequel on veut effectuer différentes validations et traitements, puis ouvrir une page dans une nouvelle fenêtre (avec un target=_blank)
Sauf qu'on n'a pas d'attribut Target dans un bouton, et qu'il n'est pas non plus possible de le spécifier sur un Response.Redirect ou un PostBackUrl.
On pourrait penser utiliser un hyperlink à la place, mais il ne dispose pas d'évènements côté serveur pour effectuer les traitements.
Solution : Une solution pour faire ça, est de changer le target de la forme avec une instruction javascript dans l'attribut OnCLientClick du bouton :
...
Vous avez peut-être déjà dû faire des tests unitaires, au moins par obligation. J !
Il arrive souvent dans les tests unitaires, de devoir tester l'égalité de 2 objets : par exemple, on veut tester la DAL. Du coup on enregistre une entité en base de données, on charge l'entité avec son Id, puis on compare les 2 objets. Si les propriétés sont identiques alors le test est Ok.
Possibilité :
Si on a de la chance, les entités implémentent un truc du style IComparer, mais là faut pas trop rêver, c'est assez rare.
Dans l'autre cas, on se paluche à la mano la ...
Si vous avez ce genre de bug sur MS Project, lorsque vous essayez de le connecter avec votre Projet Team :
C'est que votre fichier de mapping n'est pas bon (omg)
Alors pourquoi il n'est pas bon hein ? Ben je sais pas !!! (osef)
Par contre la solution pour réparer ce bousin :
Utilisez l'utilitaire en ligne de commande (comme tout bon utilitaire qui permet de faire tourner un produit MS) TFSFieldMapping.exe
Etape 1 : Récupérer un fichier de mapping correct, genre celui du projet Bewise.ExempleAgile :
TFSFieldMapping.exe download http://team.bewise.fr:8080 Bewise.ExempleAgile C:\tmp\MappingFile.xml
Etape 2 : Uploader le bon ...
Si vous cherchez la propriété Control.IsDesignMode dans WPF vous risquez de chercher longtemps car celle-ci n'est pas présente directement dans les contrôle. Logique : quel est le rapport entre un contrôle et le fait qu'on soit en mode design !?
Cette propriété est toutefois indispensable, alors les gens de WPF sont gentils et vous offre cette méthode :
System.ComponentModel.DesignerProperties.GetIsInDesignMode(DependencyObject do )
Si Powerpoint ou Excel ou encore Word moulinent pendant 10 minutes à tenter d'ouvrir le document qui est stocké sur un SharePoint puis se gaufrent lamentablement, vous pouvez toujours tenter, à vos risques et périls de redémarrer le service « WEBCLIENT » sur votre machine.
Je dis à vos risques et périls car il se peut que ce service ne supporte pas très bien le redémarrage, au pire des cas, il vous faudra redémarrer la machine avant de pouvoir ouvrir de nouveau les documents directement depuis un site SharePoint.
(Ce service sert à Windows pour « mapper » les documents sur le ...
Scott Guthrie a bloggé récemment sur la possibilité de consulter les sources du framework grâce à l'application d'un patch sur Visual Studio 2008. Seul problème, il est seulement possible de consulter les sources classes par classes et non d'avoir une vue d'ensemble sur toutes les sources du framework.
Afin de palier à ce problème, Kerem Kusmezer et John Robbins ont développé un outil permettant de télécharger en mode Batch l'ensemble des sources depuis les serveurs de Microsoft. Le projet est disponible via CodePlex : NetMassDownloader
Le résultat est le téléchargement de ...
Si vous en avez marre de lancer manuellement reflector à chaque fois que vous en avez besoin, sachez qu'il est possible de l'intégrer directement au sein de Visual Studio sans avoir besoin d'installer d'Addin.
Pour cela rendez-vous dans Tools\External Tools puis ajouter un élément comme ci-dessous
L'argument $(TargetPath) vous permet de lancer reflector en ajoutant l'assembly générée par votre projet courant directement au sein de Reflector.
Une fois validé vous devriez avoir une nouvelle entrée dans votre menu Tools. Mais si vous êtes encore plus fainéant et que vous souhaitez avoir un beau bouton ...
Votre service WCF ne répond plus au bout de quelques requêtes. Il y a une chance pour que vous ayez atteint le nombre d'appels, d'instances ou de sessions maximum. Vous pouvez configurer ça dans configuration/system.serviceModel/behaviors/serviceBehaviors/behavior :
< serviceThrottling maxConcurrentCalls ="4000" maxConcurrentInstances ="4000" maxConcurrentSessions ="40000" />
Pour vous faire une idée de l'avantage qu'il y a à utiliser les composants DevExpress.
Voici 2 portions de code qui font EXACTEMENT la même chose, à savoir : ajouter dynamiquement une barre de statut à un formulaire, et qui contient 1 élément de type Image.
Code avec les contrôles natifs WinForm :
this .statusStrip = new StatusStrip();
this .Controls.Add( new ToolStripStatusLabel(Bitmap.FromFile( "monImage.JPG" )));
this .statusStrip.Items.Add(lbl);
Code avec les contrôles DevExpress :
this .barManager = new Owandy.Julie.Control.OWBarManager( this .components);
this .barDockControlBottom = ...
En C#3, une expression lambda permet de définir une méthode anonyme de manière simplifiée en utilisant une syntaxe simplifiée.
Vous avez en plus, la possibilité de transformer une expression lambda en une Expression Tree afin de représenter le code de l'expression, sous forme d'un graphe d'objet (cf explications d'hier).
Je vous avais indiqué hier, qu'il était uniquement possible de définir une seule expression (« une seule ligne ») dans une expression lambda.
Et suite à cette indication, un court chevelu qui aime les technos qui terminent par «X» m'a montré un bout de code ...
Voilà une info intéressante que j'aurais bien aimé avoir après ma session sur C#3 aux techdays, où un charmant visiteur a réussi à me coller de belle manière ! J
Ce dernier est venu me voir à la fin de la session afin de me demander si l'appel de la méthode Compile sur les expressions introduites avec C# 3 avait le même inconvénient que l'appel de la méthode Compile sur des regex, à savoir qu'il n'est pas possible d'unloader le code généré de l'AppDomain.
En effet, si on travaille avec beaucoup de regex au sein d'une application que l'on appelle cette méthode, ...
Vous partez sur un nouveau projet ? Vous n'avez pas d'existant ? Pas de base de données ? Vous avez choisi Linq To SQL ? Alors mettez cette KB dans votre poche, elle vous servira.
Arrêtons de se prendre la tête à faire du SQL (désolé Jean-Pierre). Laissons .Net s'en charger pour nous.
Plus besoin de SQL Server Management Studio ou de TeamDB (encore désolé Jean-Pierre et Sacha). Travaillons de manière homogène et utilisons Linq To SQL, que ce soit pour créer la base, les tables, les contraintes, ou encore pour remplir les tables avec des scripts SQL imbitable.
1 ère étape : Créer ...
Vous voulez publier dans MOSS, via Excel Services, un classeur Excel qui affiche des données. Ces données proviennent d'une source de données externe (SQL Server, par exemple) via un fichier de connexion de données.
Si vous utilisez l'authentification Windows, les utilisateurs ne pourront pas rafraîchir l'accès à la source de données et obtiendront le message d'erreur suivant :
L'erreur est dû au fait que MOSS ne sait pas faire de la délégation, ce qui est indispensable pour que la connexion de données accède à la source de données via authentification Windows.
Vous avez 2 ...
Le moyen le plus simple de créer une ombre en WPF est d'utiliser un bitmapeffect de type DropShadow.
Certes les bitmapeffect en WPF ça va aussi vite que moi sur un vélo mais bon, cela a le mérite de fonctionner correctement.
Le soucis est qu'il n'est pas possible d'utiliser des bitmapeffect lorsque vous êtes en mode d'exécution Partial Trust (ce qui est le cas par défaut pour des applications XBAP).
Afin d'être capable de quand même implémenter une ombre, sans trop de bidouille, sachez qu'il est possible d'utiliser les thèmes de Windows (en l'occurrence Aero) afin d'implémenter des ombres. ...
Dans un UpdatePanel, le contrôle FileUpload ne fonctionne plus.
Pour palier ce problème, plusieurs solutions :
Dans l'updatepanel :
< Triggers >
< asp:AsyncPostBackTrigger ControlID ="BTN_Upload" EventName ="Click" />
Triggers >
Si votre updatepanel est dans une masterpage, et que votre fileupload est dans un asp :Content
Au Page_Load :
ScriptManager.GetCurrent(Page).RegisterPostBackControl(BTN_Upload);
Si vous êtes sous Vista vous pouvez les récupérer en allant sur le fichier Outlook.xml du dossier C:\Users\ user \AppData\Roaming\Microsoft\Outlook. En récupérant la version précédente sur les propriétés du fichier :
Voici un problème que nous avons (je pense) tous déjà rencontré en .Net quand on utilise des collections génériques et des classes d'héritages.
Le contexte :
Voici 3 classes très simples, une classe Contact et 2 classes enfant Employe et Client.
public class Contact
{
public string Nom { get; set; }
}
public class Client : Contact
{
public string Compte { get; set; }
}
public class Employe : Contact
{
public int Salaire { get; set; }
}
Nous avons 2 listes génériques, une liste d'objets Employe et une liste d'objet Client :
List employees = new ...
Comme si il n'y avait pas assez de différences entre les possibilités C# et VB. il a fallu qu'ils en rajoutent. Ah la belle perle (ou merde pour ceux qui préfèrent) !!
Rien ne vous choque la dedans ??
Dim typeAnonyme = New With {.Name = "pouettepouette" }
typeAnonyme.Name = "tutute"
Qui a dit un jour qu'un objet de type anonyme n'était pas modifiable ?
Code compilé avec le compilateur VB puis décompilé avec Reflector :
public T0 Name
{
[DebuggerNonUserCode]
get
{
return this.$Name;
}
[DebuggerNonUserCode]
set
{
this.$Name = value;
}
} ...
Vous avez une liste, jusque là rien d'exceptionnel.
Une liste a une propriété Count, tout va bien jusqu'ici (je le précise car c'est important pour la suite et pour ceux qui ne le savent pas encore)
Vous voulez appeler la méthode d'extension Count qui va vous permettre de calculer le nombre de clients qui répondent au doux nom de « toto » :
(en C#)
customers.Count(c => c.Name == "toto" );
(en VB), ca devrait NORMALEMENT ressembler à ceci :
customers.Count( Function (c As Customer) c.Name = "toto" )
Eh bien vous vous mettez le doigts dans. l'oeil !
La méthode d'extension Count ne peux ...
Par deux fois chez des clients je me suis retrouvé avec l' intellisense de Visual Studio 2008 qui se met à ralentir au point de stopper complètement ma productivité.
J'ai d'abord cru que ce problème de performance venait de mon OS non-déterministe (ie. Vista) mais non, le problème venait bien de Visual Studio.
Le problème est apparu dans les cas suivants :
utilisation d'un "gros" Dataset typé
utilisation d'une grosse référence de Web Service (ReportService2006.asmx vous connaissez ?)
Après quelques investigations, j'ai trouvé d'autres personnes avec le ...
Après une bataille acharnée avec mon MOSS et plus particulièrement mon Excel Services qui m'affichait à répétition l'erreur suivante :
« Unable to retrieve external data.." ET Même si tout était bien configuré dans le SSP (trusted data connection, trusted document Library » and so on ..
J'ai vaincu !!
La connexion à Analysis services est forcément une connexion « windows intégrée » donc il faut que tu autorises la délégation d'identité à ton SSP afin qu'il puisse « prendre » le profil de la personne connectée sous ...
Si on créé un Template d'une Scrollbar, on se retrouve avec quelque chose comme ca :
< Track Name ="PART_Track" IsDirectionReversed ="true" >
[.]
< Track.Thumb >
< Thumb Height ="5" Width ="5" />
Track.Thumb >
Track >
Qui donne un truc comme ça :
Le Thumb, qui correspond au rectangle que l'on déplace, ne tient pas compte de la largeur et hauteur que je lui ai fixé dans le template (Height="5" Width="5")
Pourquoi donc ? Tout simplement parce que sa taille est recalculée par l'élément Track en fonction de la taille de la zone ...
Petite bible intéressante sur tous les mécanismes de threading, synchronisation, performances, optimisation, signal, moniteur, . qui concernent l'asynchronisme :
http://www.albahari.com/threading/
Si vous devez sérializer des données en XML et que vous avez besoin de performances , évitez le XMLWriter.
J'ai comparé la sérialisation d'un noeud avec trois attributs entre :
· Un XmlWriter avec toutes les options désactivées
· Une écriture directe via un StringBuilder (oui c'est moche, mais c'est rapide)
Le XmlWriter est 10 fois plus lent : pour 100 000 sérialisations on obtient une moyenne de 600 millisecondes contre 60
De plus, les temps du XmlWriter sont très variables (ca peut varier du simple au double) alors que ceux du StringBuilder sont d'une constance a faire palir un horloger. ...
StringBuilder versus String.Concat
Lorsqu'on doit concaténer successivement des chaînes de caractères, on sait tous qu'il faut utiliser un StringBuilder.
Mais ce qu'on sait moins, c'est que les méthodes String.Concat sont beaucoup plus rapides sur les petites concaténations :
String.Concat ("http: //", monip, "/maresource");
String.Concat("Salut", toto);
Bien évidement, on ne peut pas utiliser le String.Concat dans certains cas :
StringBuilder sb = new StringBuilder()
foreach (String s in monTableau)
{
sb.Append (s);
}
return sb.ToString();
Toutefois, l'exemple suivant est ¼ de fois plus rapide avec ...
Voici un petite [KB] concernant l'erreur suivante :
Voici comment solutionner le problème :
(lien : http://www.cnblogs.com/Don/archive/2008/04/07/1139880.html )
First of all you need to find the path of AL.exe on your machine, AL.exe should be there when you install Windows SDK.
Go to: Start -> Programs -> Microsoft Visual Studio 2008 -> Visual Studio Tools -> Visual Studio 2008 Command Prompt
Type the following command: Where al.exe
The above command shall give you the path to the AL.exe on your machine.
Now go to Control Panel -> System -> Advanced System Settings -> Environment Variables
Add a new variable with the following ...
Généralement, le positionnement WPF permet de définir une taille avec :
· Soit une valeur fixe,
· Soit une valeur Auto : la taille dépend du contenu
· Soit une valeur * : le contrôle prend l'espace disponible.
Problème si vous définissez une GridViewColumn avec une largeur de * . bin ça ne compile pas !
Pour contourner le problème, vous pourrez trouver plusieurs exemples qui fonctionnent . pas ou mal.
Voici une solution qui fonctionne à priori, elle permet d'avoir
· Une colonne qui remplit l'espace disponible
· D'autre colonnes avec une taille fixe
Vous devez ...
Parce que les ListView c'est bien, voici un extrait de la classe GridViewRowPresenter:
private static readonly Thickness _defalutCellMargin;
_defalutCellMargin = new Thickness(6.0, 0.0, 6.0, 0.0);
Grâce à ces 2 merveilleuses lignes de code, vous ne pouvez pas supprimer proprement la marge des cellules d'une ListView qui est fixée en dur dans le code.
Pour contourner le problème il faut positionner des marges négatives dans les DataTemplate des GridViewColumn.
C'est moche, mais il n'y a pas mieux.
Voici un petit article que j'ai trouvé une fois passé 3 heures à chercher pourquoi :
...
ça se passe par là :
http://www.beacosta.com/blog/?p=52
Si vous souhaitez savoir si une dependencyProperty que vous avez créé a changé à cause du binding ou à cause du modification manuelle voici une astuce qui vous aidera :
Il faut avant tout se rappeler qu'une DependencyProperty est généralement composée de deux éléments : le premier est la DependencyProperty elle-même c'est-à-dire sa définition :
Et le second élément est le Property wrapper associé.
Ainsi pour des raisons de commodité, le développeur appelle directement la propriété afin de lire/écrire la valeur de la ...
Lorsque l'on fait de l'interop avec du natif on se retrouve rapidement à devoir gérer les erreurs « à l'ancienne » grâce aux valeurs de retours renvoyées par les fonctions qui permettent de savoir s'il y a eu un soucis lors de l'exécution.
Afin de gérer de manière simple ces HRESULT (entiers différents de 0 s'il y a eu une erreur) sans polluer votre code et donc sans faire le test après chaque appel de fonction comme dans cet exemple :
(Cela devient vite très ennuyeux de faire l'appel après chaque appel de fonction.)
Il existe une astuce toute bête : Passer par une ...
Lorsque vous développez une application ou bibliothèque C++ en mode mixte (mêlant code natif et code managé), il est recommandé de fournir un point d'entrée non managé pour votre DLL. Si ce n'est pas le cas vous risquez de rencontrer ce genre de message amical de la part de regsvr32 : Pour ce faire, sélectionner le fichier cpp contenant votre point d'entrée (dans mon cas DllMain.cpp) et désélectionner l'option Compile with CLR afin que ce fichier ne soit pas flaggé avec le /CLR lors de la compilation contrairement aux autres fichiers cpp de votre bibliothèque :
Ce que vous allez lire est l'aboutissement de plusieurs heures d'effort.
La gestion du Focus en WPF est relativement complexe en WPF car elle fait intervenir deux notions distinctes le « logical focus » et le « keyboard focus » .
Pour plus d'information sur le sujet :
http://msdn.microsoft.com/en-us/library/aa969768.aspx
Voici mon besoin initial :
J'ai un TabControl avec tout plein de TabItem
Chaque TabItem contient (entres autres) une Textbox
Lorsque je change d'onglet, j'aimerais que ma Textbox prenne le Keyboad focus (comme ca l'utilisateur peut directement saisir du texte).
La solution évidente, on s'abonne à ...
Les RoutedEvent sont les remplaçants des EventHandler classiques en WPF.
Différence majeure d'un RoutedEvent, il est déclenché au niveau de chaque noud de l'arbre visuel alors qu'un évènement classique ne fait qu'appeler des méthodes (bref des délégués).
L'avantage des RoutedEvent:
Les évènements sont propagés dans l'arbre visuel, on peut donc recevoir des évènements depuis des contrôles qui sont embarqués dans des contrôles eux-mêmes . Bref vous m'avez compris
Il est possible de s'abonner à un évènement quelconque (pour ...
TFS 2008 ne permet pas de gérer les alertes si le serveur smtp utilisé nécessite obligatoirement une authentification de l'utilisateur.
En effet, si le compte du service TFS n'est pas un compte ayant d'adresse mail configuré sur le serveur smtp (ce qui est le cas en mode workgroup), vous ne pourrez pas spécifier de crédentials car les fichiers de config de TFS ne le supporte pas (oui c'est HONTEUX !!! :@)
La solution pour résoudre ce soucis est d'installer un serveur smtp en local sur le serveur TFS et d'activer le relais vers le « vrai » serveur smtp de l'entreprise.
Pour ce faire installez la fonctionnalité ...
En C# nous avons la possibilité de rajouter une virgule à la fin de la liste des valeurs d'une enum.
Exemple :
La virgule après Buffering est acceptée et le code compile sans aucun soucis.
La question qu'il est légitime de se poser est de savoir pouquoi le compilateur C# si rigoureux habituellement est-il autant laxiste dans le cas donné ?
Encore une fois, il s'agit d'une raison historique qui tire son origine du langage C++.
Le C++ permet en effet l'écriture de ce genre de code pour 3 raisons différentes :
· Faciliter la génération de code (pas besoin de supprimer le ...
Le but de cet email est de gagner un peu de temps pour ceux qui auront à travailler avec SSIS et des instances nommés de SQL Server.
Ma situation
J'ai un serveur sur lequel :
- SQL Server 2005 est installé comme instance par défaut
- SQL Server 2008 est installé avec une instance nommée MSSQL2008.
Je veux exporter les lots SSIS du SQL2005 vers SQL2008 donc j'ouvre la console SQL Server Management Studio (SSMS) et j'essaye de me connecter à l'instance nommée MSSQL2008 :
Comme on peut le voir dans l'image, on obtient un message d'erreur sympa qui nous explique en gros que SSIS ne supporte pas les instances ...
Si vous devez effectuer un binding qui dépend de plusieurs valeurs tout en étant capable d'être notifié dès qu'une modification a eu lieu sur une des valeurs, vous avez, entre autres, la possibilité d'utiliser le MultiBinding.
Exemple simple :
Une classe Personne :
Puis au niveau de l'interface :
Il faut donc ensuite créer un Converter afin d'indiquer la valeur à retourner en fonction des différentes propriétés bindées. Pour cela il ne faut pas créer un converter classique mais un IMultiValueConverter qui prend en paramètre un tableau d'objets correspondant aux ...
Vous trouverez ci-dessous une KB pour l'analyse des performances sur une application .NET Compact Framework 2.0 SP1.
Deux outils sont disponibles pour la gestion des performances sur les PDA :
· Génération automatique des statistiques (via un fichier avec l'extension .stat) ,
· Utilisation de l'outil du .NET Compact Framework 2.0 : Remote Performance Monitor.
Avant toute chose vous devez installer la version SP1 du .NET Compact Framework 2.0 que vous trouverez sur dfs \\bewise\dfs\Downloaded Files\Software\.NET compact framework SP1 .(soit l'exe du CF 2.0 avec le SP1 soit le patch pour ceux qui l'ont déjà)
Les outils de remote : ...
Vous souhaitez embarquer une appli Silverlight 1.0 (celle avec seulement du JavaScript partout, merci Yann :) au sein d'une application ASP.NET (bon courage !), dans VS 2008, et le problème c'est que vous n'avez pas l'IntelliSense au niveau du fichier Xaml (c'est très con même si il n'y a que quatre contrôles :o) ).
Sacha l'a fait pour vous et vous avez deux possibilités :
1. Vous ne voulez pas pourrir votre machine avec Silverlight 1.1 For Visual studio 2008 alors que le beau 2.0 Va sortir, mais vous avez installé le SDK pour le 1.0 et les Template de projet pour VS 2005 (ceux qui ne comprennent rien et comptent arrêter de ...
La technologie :
Silverlight béta 1
ASP.NET
Le prérequis :
Vous avez une application silverlight 2 béta 1 qui est hébergée par une application Web (via le contrôle ) que vous hébergez à son tour dans IIS (et non cassini).
Le problème :
Quand vous exécutez votre application Web, le contrôle Silverlight s'affiche mais aucun contenu de votre page xaml ne s'affiche!
La solution :
Silverlight fournit à votre site Web ses dlls compilés via un fichier embarqué avec l'extension .xap. Pour que le contenu de ce xap (et donc de votre application silverlight ) puisse ...
Attention ce message peut être incompréhensible pour les non-initiés aux duplex channels.
En WCF pour faire une communication bi-directionnelle ont utilise les Duplex channels.
Rappel, les duplex channels nécessitent :
L'activation des sessions
L'implémentation de l'interface de Callback afin de recevoir les messages du serveur.
Un proxy du server de type System.ServiceModel.DuplexClientBase
Pour démarrer le client, il faut :
Instancier le callback :
MonCallback callback = new MonCallback() ;
Instancier un InstanceContext
InstanceContext context = new InstanceContext(callback)
Instancier le ...
Voici un petit truc à savoir sur l'OperationContext qui vous permet notamment de récupérer le CallBack Channel pour les opérations OneWay.
Vous avez moyen du côté service de récupérer l'OperationContext courant, via la propriété statique « OperationContext.Current ». Cette propriété « vit » dans le stockage du thread courant et pas un autre ! En fait, cette propriété est mise à jour avant que WCF ne dispatche la requête au code utilisateur. Si vous démarrez de nouveaux Threads dans la couche Service, il vous faudra passer en paramètre ...
Click-once et avec autre chose que IIS genre APACHE (je sais c'est moche et je l'ai jamais dit) :
créer les types MIME suivant pour que ça marche:
.application => application/x-ms-application
.deploy => application/octet-stream
.manifest => application/x-ms-manifest
Exécuter une appli ClickOnce Programmatiquement:
string folderProgram = Environment.GetFolderPath(Environment.SpecialFolder.Programs);
string folderApplication = "TestClickOnce" ;
string applicationExtension = ".appref-ms" ;
Process.Start(Path.Combine(Path.Combine(folderProgram,folderApplication),folderApplication+applicationExtension));
ou
...
Même si je fais du web de façon intensive depuis plusieurs années, je n'ai jamais creusé les contrôles de databinding tout prêt de ASP.NET (ni 1.1, ni 2.0). Je peux même dire que je suis novice avec les GridView , FormView et autres DetailView .
Je suis confronté à ces contrôles depuis quelques mois maintenant dans le cadre de projets qui en tirent parti. Je dois dire que je commence à être séduit par ce mode de fonctionnement même si je reste accro aux " custom templated controls ".
Sauf que la semaine dernière j'ai découvert que la FormView a un fonctionnement ...
Si l'on à deux écrans et que le principal c'est celui de droite, on ne voit pas la fenêtre popup de Team Explorer ce qui nous fait croire que VS a figé.
C'est beau
Vous disposez d'un VHD sur lequel vous souhaitez booter
Vous avez Windows 7 build 7110 (RC)
Lancez un bon vieux CMD et utilisez l'utilitaire bcdEdit
Le principe est de créer un nouveau Boot, qui va pointer sur votre VHD.
Par facilité, au lieu de créer un boot entier, on va juste « copier coller » le boot par défaut de W7 et modifier ses propriétés :
1) Copier -coller de la configuration de boot par défaut :
* bcdedit /copy {current} /d "Boot from Vhd"
{current} : Séquence de boot par défaut (Windows 7 )
...
Certains d'entre vous ont peut-être eu envie de changer le navigateur web par défaut de leur système, mais ne l'ont pas fait car ils veulent continuer à développer des sites web et à les débuguer sous Internet Explorer.
Eh bien en fait, il est tout à fait possible de définir un autre navigateur comme navigateur par défaut du système, et continuer à utiliser Internet Explorer pour développer !
Pour cela, définissez votre navigateur préféré dans Windows, puis allez dans Visual studio. Faites un clic droit sur un fichier aspx, puis « Browse with »
Et vous ...
Avant de changer d'OS vous souhaitez savoir si votre CPU supporte le 64bits ?
C'est assez simple :
Si votre CPU est un des modèles suivants vous pouvez vous référer à ce tableau :
Processor Name
32- or 64-bit
Intel Core Solo
32 bit
Intel Core Duo
32 bit
Intel Core 2 Duo
64 bit
Intel Quad-Core Xeon
64 bit
Sinon dans tous les cas pour être sûr vous pouvez utiliser l'utilitaire d'Intel « Intel Processor Indentification Utility » http://www.intel.com/support/processors/tools/piu/sb/CS-014921.htm
...
Si vous souhaitez migrer vers Windows 7 dès sa sortie tout en conservant votre machine actuelle, vous avez la possibilité de faire une image de votre machine actuelle sous forme de machine virtuelle afin de pouvoir la monter quand vous le souhaitez.
Pour cela deux cas :
Vous travaillez actuellement sous Windows Server. Dans ce cas Microsoft propose une conversion simple à mettre en ouvre à l'aide de System Center Virtual Machine Manager TechCenter : http://technet.microsoft.com/en-us/library/bb740912.aspx
Vous n'êtes pas sous Windows Server. Vous pouvez utiliser VMWare vCenter Converter (gratuit) qui vous permet de convertir votre ...
C'est un problème que l'on rencontre souvent, vouloir concaténer les résultats d'une requête contenant un group by.
Une solution existante à laquelle on ne pense pas forcement, est d'utiliser les fonctionnalités xml de sql server, pour récupérer les résultats.
Plus d'infos sur http://blogs.msdn.com/lbanon/archive/2007/12/23/faire-une-concat-nation-sur-un-r-sultat-d-une-requ-te.aspx , ça marche plutôt bien !
Qques infos sur l'enregistrement dans le GAC durant l'installation de vos applis : Solution la plus simple : Utiliser le dossier spécial « Global Assembly Cache Folder » lors de la création de votre setup si vous utilisez un MSI. Si vous n'utilisez pas de MSI quelques solutions : Gacutil.exe n'est pas présent dans le framework .net mais uniquement dans le SDK du framework. Il n'est donc pas disponible par défaut sur les postes exceptés sur certaines versions de Windows 2003 où l'outil a été inclus par erreur dans le framework .net. Il vous faut donc l'embarquer vous-même dans votre setup afin de l'exécuter. Autre solution, utiliser des APIs natives non documentées ...
Si vous avez déclaré une variable via gcroot de telle manière :
gcroot inputFilter;
et que vous souhaitez tester la nullité de cette variable vous devez opérer de cette manière :
if (nullptr==static_cast(inputFilter))
Si votre installation de Visual Studio foire quasiment dès le début avec ces messages dans le error log :
[08/13/09,12:51:58] setup.exe: [2] ISetupComponent::Pre/Post/Install() failed in ISetupManager::InternalInstallManager() with HRESULT -2147023293.
[08/13/09,12:51:58] VS70pgui: [2] DepCheck indicates Microsoft Visual Studio Web Authoring Component is not installed.
Tentez le coup en fermant les applications office (notamment Outlook) et en particulier si vous avez office 2010 installé. ça marche beaucoup mieux d'un coup !
Lorsque l'on installe la version 64 bits de Virtual PC 2007 sur un OS 64 bits, on est surpris de voir que le programme souhaite s'installer dans le dossier Program Files(x86) réservé aux applications 32 bits au lieu de s'installer dans le dossier Program Files où reposent les applis 64 bits. Il n'y a aucune erreur dans l'installation, le fait est que Virtual PC 2007 64bits reste une application 32 bits mais qui utilise des drivers systèmes 64 bits.
Cependant le fait que Virtual PC reste 32 bits, a un impact important : vous avez beau avoir installé un 0S 64 bits et disposer de Virtual PC 64 bits , il ne vous sera pas possible d'installer un OS 64 bits ...
Après des longues batailles je viens de comprendre qu'en IE8 ouvrir une nouvelle instance du navigateur ne veut pas dire qu'une nouvelle session sera démarrée. Méfiez-vous donc, lorsque vous faites des tests avec plusieurs utilisateurs sur le même site.
Pour les sceptiques, le test est très simple :
1. Ouvrir une instance IE (Start->IE8)
2. S'authentifier sur un site (exemple Yahoo ou Google)
3. Ouvrir une autre instance IE (Start->IE8)
4. Aller sur le site en question -> et voilà que vous êtes déjà authentifiés.
Le même fonctionnement existe sur les instances de InPrivate Browsing. ...
Pour info, voici comment on fait pour modifier l'XML directement dans le champ de la base de données.
Scénario : j'ai une table avec une colonne qui contient de l'XML du genre
< properties >
< property name ="Ordre du stade" value ="0" />
< property name ="Stade BBCH" value ="00" />
< property name ="Projet" value ="1" />
properties >
Je veux ajouter une nouvelle ligne là dedans
G
J'ai fait ça avec la commande :
UPDATE T
set ensProprietes. modify ( '
insert G
as first
into (/properties)[1] ' )
WHERE T.ensID = 12705
Pour plus d'infos sur MSDN ...
Une méthode pour pouvoir 'rapidement' mettre en place du https sur une appli .
Objectif
Remplacer le http par du https sur une application server(httplistener) / client (httpwebrequest).
Avoir une procédure d'installation sur un poste qui n'est pas celui où est généré le certificat
Méthode
Créer un certificat sans l'inclure dans le magasin local, en le stockant sur fichier
Installer et lier le certificat sur le serveur au couple ip/port utilisé dans l'application à partir du fichier
Remplacer dans l'appli les appels http sur le port 80 par https sur 443
...
http://referencesource.microsoft.com/netframework.aspx
Enjoy !
Si au cours de vos développements Silverlight, vous cherchez à mesurer les performances de votre plugin, sa conso mémoire ou processeur je vous conseille l'outil SilverLightSpy.
Il est en version d'évaluation gratuite pendant 30 jours, après la License est de 69 ? (Gratuit pour les MVP Silverlight ou Blend).
Vous avez installé Office 2010 et vous n'arrivez pas à l'activer ?
Dans une application Office, allez sur le backstage :
Activez le produit par Internet.
Si vous avez un message d'erreur disant que vous avez besoin des droits d'administrateur:
· Fermez l'application
· Faites Ctrl + Clic Droit sur le raccourci de l'application et « Run As Administrator »
· Relancez l'activation
Si vous voulez améliorer vos temps d'accès au planning principal sous Outlook :
Ajoutez le planning principal dans les favoris si ce n'est pas encore fait
Allez dans le menu : Tools | Account Settings
Cliquez sur : Change
Puis sur More Settings |Advanced | Download Public Folder Favorites
Redémarrez Outlook
Il va mettre un moment à télécharger les éléments puis vous serez opérationnel
Si vous aussi vous en avez marre d'écrire tout le temps string.IsNullOrEmpty(s) rajouter ceci dans vos projet :
namespace System
{
public static class StringExtension
{
public static bool IsNullOrEmpty( this string s)
{
return string .IsNullOrEmpty(s);
}
}
}
Mettez bien comme namespace System, comme ça vous n'aurez pas besoin de penser à rajouter le using, puisqu'à partir du moment où vous utilisez des strings, vous avez forcément (ou presque) déjà un using System.
Et comme ça yapluka :
string s;
if (s.IsNullOrEmpty())
{
}
Si vous avez besoin d'afficher une liste de documents, c'est toujours plus joli d'afficher en plus du nom du fichier, l'icône associé à l'extension de fichier (par exemple : Afficher un treeview représentant une arborescence de fichier).
1 ère solution :
Embarquez dans les ressources du projet tous les icônes possibles (bon courage)
2 ème solution :
Recopiez ces quelques lignes de codes (merci David d'avoir pensé à « reflecter » Team Explorer. ;)
internal static class NativeMethods
{
[DllImport( "shell32.dll" , CharSet = CharSet.Unicode)]
public static extern IntPtr ...
Cette KB permet de rechercher des nouds dans un treeview de manière récursive et vérifiant un prédicat (un peu comme le Find ou le FindAll d'une List).
public static class TreeNodeExtension
{
public static IEnumerable FindNodes( this TreeNodeCollection nodesCollection, Funcbool> predicate)
{
var nodes = nodesCollection.Cast();
return nodes.SelectMany(n => FindNodes(n.Nodes, predicate).Union(nodes.Where(n2 => predicate(n2))));
}
}
Le SelectMany permet de mettre à plat l'appel récursif. Si on utilise un select à la place du SelectMany on obtient une liste de liste de noud. Le ...
Si un jour vous avez besoin de créer une Collection de sites dans une Content DataBase spécifique, vous pouvez utiliser la Feature présentée dans le lien :
http://blogs.developpeur.org/gribouillon/archive/2008/12/12/how-to-choose-a-content-database-when-creating-a-new-sites-collection-choisir-sa-base-de-donnees-de-contenu.aspx