Archive

Archive for the ‘Visual Studio’ Category

Xamarin.Forms et les ressources graphiques embarquées – Tip & Tricks & Warning

Lors de la création d’une solution Xamarin.Forms ( 3 projets spécifiques à chaque plateforme mobile, et un projet commun) , la gestion des images et des ressources embarquées (Embedded Resources) est un peu déroutante (même les forums Xamarin ne sont pas d’une aide énorme 😦 et témoigne d’un certain flou sur ce sujet).

Dans tout projets mobiles, il a des ressource graphiques (image, icône, vidéo, audio) qui doivent être insérées dans votre projet.

Quand on fait du spécifique , on ne se pose pas de question. Avec les Xamarin.Forms, il y a plusieurs possibilités et plusieurs manières de gérer les ressources, avec des variations sur leur utilisation dans le code.

La première question à se poser :

  • Est ce un élément spécifique à une plateforme mobile ? Ex : l’image de splashscreen d’une application Windows Phone
    ==> l’élément doit être placé dans le projet propre à la plateforme , et les différent option de compilation spécifique utilisé (Content pour Windows Phone, Android Resource, Bundle pour Android) …
  • Est ce un élément commun utilisé par la partie Xamaring.Forms de l’application ? ex : des images qui compose les écrans, …
    ==> l’élément doit être placé dans le projet commun ( le projet PCL ou le Shared Project) et l’option de compilation positionné à « Embedded Resource« 

Ensuite, l’utilisation de cette ressource embarquée (Embedded Resource) passe par l’utilisation de son nom de ressource. Or, dans ce le cas de Xamarin pour Visual Studio, il n’est pas possible de connaître dans l’IDE le nom de la ressource.

Un petit coup de JustDecompile permet de comprendre la règle de nommage des ressources embarquées (dans le cas d’un projet Portable)  :

  • NomDuProjet.Folder1.Folder2.NomDuFichier

 

XaraminFormsResourcesWithPCLProject

Ainsi pour une image appelée ( SplashScreen_720x1280.JPG), placée à la racine du projet « MonProjetDemoXF », son nom de ressource sera « MonProjetDemoXF.SplashScreen_720x1280.JPG« , et pour une images « Logo.JPG » placé dans le dossier « Images » du même projet, son nom de ressource sera « MonProjetDemoXF.Images.Logo.JPG« 

 

La création d’une view Image utilisant cette image se fera avec le bout de code suivant :

    new Image() {
         Source = ImageSource.FromResource(« MonProjetDemoXF.SplashScreen_720x1280.jpg »)
            }

 

MAIS ATTENTION : il s’agit de la règle générale (prendre le nom du projet en préfixe et les sous dossiers). Dans le cas d’un projet commun de type « Portable Class Library », le cas présenté ci avant est exact. Lors de la compilation, le projet PCL génère sa propre assembly et les règles de nommage découle de cette assembly.

MAIS dans le cas d’un « shared project », il n’y a pas de compilation du shared project en tant que tel (pas d’assembly généré), mais une fusion des sources du ‘shared project’ avec les sources du projet le référençant, puis la compilation du résultat de cette ‘fusion’. Ce comportement implique que le nom du projet utilisé pour générer le nom de la ressource est celui du projet référenceur. Or, les projets mobiles ont des noms différents pour chaque plateforme : « MonProjet.WinPhone », « MonProjet.iOS » et « MonProjet.Android », ce qui implique que la ressource issue du ‘shared project’ a un nom différent pour chaque plateforme !!!

De plus, les noms des sous dossiers ne sont pas repris dans le nom de la ressources !!

XaraminFormsResourcesWithSharedProject

 

Voilà : à l’usage on verra quelle solution est la plus performante, mais en terme de réutilisabilité et de testabilité le projet PCL permet d’éliminer les aléas de nommages des ressources.

Xamarin 3 Rocks ! (quand même 🙂 ).

 

Catégories :.NET, Mobilité, Visual Studio, Xamarin Étiquettes : , , , ,

Visual Studio 2010 n’arrive pas à attacher son débugger à Internet Explorer 10

Depuis le déploiement d’Internet Explorer 10 via Microsoft Update, Visual Studio 2010 n’arrive plus à s’attacher à l’instance d’IE lors du debug de projet Web.

“Attached the Script debugger to process ‘[xxxx] iexplore.exe’ on machine ‘YYYY’ failed. A debugger is already attached.”

Ce n’est pas critique, mais il n’est plus possible de débugger le script qui tourne dans le navigateur, et vu l’omniprésence de jQuery et autres plugins ou framework javascript ca peut être gênant pour le développeur.

En fait, il s’agit juste d’un petit soucis d’enregistrement d’une DLL … qu’il suffit de réenregistrer pour tout remettre d’aplomb : Dans une ligne de commande lancée en tant qu’Administrateur , exécutez la ligne suivante :

regsvr32.exe "%ProgramFiles(x86)%\Common Files\Microsoft Shared\VS7Debug\msdbg2.dll

et tout rentrera dans l’ordre.

Catégories :Visual Studio Étiquettes : , , ,

Team Foundation Service (ex tfspreview.com) et l’erreur TF30063

Je viens de me frotter à l’erreur TF30063 (“you are not authorized to access https://xxxx.visualstudio.com/defaultcollection.") remonté par Visual Studio (2010 et 2012) lorsque je tentai de me connecter à un TeamProject présent dans mon server TFS hosté dans azure (visualstudio.com).

Ce problème est apparu assez subitement et simultanément sur mon poste W8/VS2012 et W7/VS2010. Je n’ai pas identifié l’origine exacte du soucis.

Quoi qu’il en soit la cause du refus d’authentification à l’air lié à la présence d’un cookie d’authentification LiveID qui reste dans le cache.

La suppression des cookies au niveau d’Internet Explorer n’a rien donné, l’erreur se produisait toujours.  La déconnexion explicite de mon LiveID à partir de mon navigateur n’a pas mieux marché.

En fait, il faut bien se déconnecter de LiveId … mais à partir d’un navigateur qui tourne DANS VISUAL STUDIO !!! La marche à suivre est donc la suivante :

  • lancez votre VisualStudio (2010 ou 2012)
  • ouvrez un navigateur via le menu “View / Other window / Web Browser”
  • naviguez sur live.com et deconnectez vous.
  • naviguez sur VOTRESERVEUR.visualstudio.com (si par hasard vous êtes connecté automatiquement déconnectez vous explicitement de votre server TFS en cliquant sur votre login en haute à droit de la page web, puis “Sign out”).
  • reconnectez vous avec votre LiveID qui dispose des droits dans le serveur TFS.

Voilà, ca vous évitera de perdre de précieuses minutes de codage pour une simple histoire de gâteau. A la place, prenez une pause café … avec un cookie c’est délicieux.

Catégories :Visual Studio Étiquettes : , ,

Déployer votre propre Machine virtuelle dans Windows Azure (1/2)

Dans ce billet , un peu plus long que d’habitude, je vous propose de faire un point une des nouvelles fonctionnalités Azure annoncé lors de la PDC 2010 : l’hébergement de machine virtuelle directement dans les datacenters d’Azure.

Il y a 4 pré-requis :

  1. Avoir un abonnement Azure valide AVEC les fonctionnalités Beta (VM Rôle) d’activé
  2. Avoir une machine virtuelle basée sur Windows 2008 R2 64bits.
  3. Avoir les licences des logiciels à installer sur la machine virtuelle Sourire

Licences logicielles et Ressources Windows Azure :

L’ensemble des licences logicielles utilisée dans le cadre de cette article provienne de mon abonnement MSDN (Windows 2008 R2, Azure, Visual Studio 2010, …) : http://www.microsoft.com/visualstudio/en-us/products/2010-editions/ultimate ) . Les abonnement MSDN (Premium, Ultimate et Bizspark) incluent des ressources Azure pour le développement (http://msdn.microsoft.com/fr-fr/subscriptions/ee461076.aspx).

Pour l’activation des avantages Windows Azure de votre abonnement MSDN, je vous recommande la lecture de ce billet écrit par Marine Tranquard.

 

Fonctionnalités Bêta de Windows Azure

L’activation des fonctionnalités Béta de la PDC (VM Role, Windows Azure Connect, …) se fait en ligne sur le site d’administration de votre souscription Azure : https://windows.azure.com

  1. Sélectionner la panneau “Home”
  2. cliquez sur l’option “Beta Programs”
  3. Cliquez sur “Participate”

image

Une fois la demande de participation aux programmes Bêtas effectuée … il peut s’écouler plusieurs jours (voir semaines Triste ) avant que vous n’obteniez l’accord. Tout dépend des ressources disponibles pour ces Betas au sein des datacenters Azure. Donc n’attendez pas, faites la demande dès maintenant !

Au passage, notez l’Id de votre souscription Windows Azure, il vous sera utile par la suite.

 

Création de l’image Windows

Une image Windows pour Azure doit être basé obligatoirement sur une installation de Windows 2008 R2 64bits. L’image doit être créer au préalable sur une des vos serveurs HyperV (en effet l’hyperviseur de virtualisation utilisé dans les data center Azure dérive d’HyperV).

Je ne rentrerai pas dans le détail de cette phase car il  n’y a pas de différence avec la création d’une VM classique dans Hyper-V. Je vous conseillerais néanmoins d’utiliser un disque différentiel qui vous permettra de télécharger une fois pour toute le disque de base  et ensuite uniquement des disques différentiés pour vos instances spécifiques.

Un seul point est important : votre disque VHD doit avoir une taille logique maximum de 66559Mo, sinon il sera refusé par Azure.

Dans le cas de ce billet, il aura donc :

  • un disque de .VHD de base (2008R2_EN_base.vhd) qui contient une installation fraiche de Windows 2008 R2 avec l’ensemble des mise à jours Windows Update.
  • un disque .VHD différentiel (SPECIFIQUE_Azure_DIFF_W2008R2_EN.vhd) qui contient les éléments spécifiques à déployer.

Astuces :

  • N’hésitez pas à activer le bureau a distance d’administration (Remote Desktop)
  • Activez la fonctionnalité “.Net Framework 3.5.1” dans vos VM de base car ce composant sera nécessaire par la suite :

feature .NET 3.5.1

 

“Azurification” de la VM

 

Une fois votre VM prête, il faut la préparer à tourner dans Azure en installant une couche logiciel d’intégration : les “Azure VM Role Integration Components”. Cette couche logicielle permettra à votre VM de remonter des statuts à l’infrastructure Azure, tout en permettant à Azure de gérer correctement les déploiements et mise en production de vos VM dans les datacenters.

Elle est fournit sous la forme d’un fichier .ISO (wavmroleic.iso) installé en même temps que le SDK Windows Azure 1.3 ( ) et se trouve dans le dossier C:\Program Files\Windows Azure SDK\v1.3\iso.

A l’aide d’Hyper-V, il faut connecter cette image iso à un des lecteur de dvd virtuel et installer les composants dans la VM. Si votre image de base est spécifique à Azure, vous pouvez y inclure ces composants.

connect iso vmrole integration

Lancer l’exécution du “waIntegrationComponents-x64.msi” dans votre VM (la fonctionnalité “.Net 3.5.1” est nécessaire).

waintegrationcomponents-x64 msi

icc - step 1

Saisissez le mot de passe Administrateur (ou Administrator) de votre VM. Il sera nécessaire pour le processus de préparation de la VM, puis cliquez sur le bouton “Install” pour que les éléments d’intégration s’installent dans votre VM.

 

icc - step 2icc - step 3

Acceptez l’installation des drivers “Microsoft Storage Controllers”, puis laisser l’installation se terminer. Il faudra redémarrer votre VM pour activer les nouveaux services et drivers.

icc - step 4icc - step 5

 

Préparation de la VM au téléchargement

 

Cette phase est destiné à rendre votre VM générique, c’est à dire à supprimer toutes informations liées à une configuration matérielle précise (nom de machine, configuration hardware, …).  L’image ainsi nettoyée pourra être déployée plusieurs fois, la configuration finale s’exécutera lors de son premier démarrage dans son nouvel environnement (qui sera un datacenter Azure).

L’outils utilisé pour ce nettoyage est “sysprep” (SYStem PREParation). Il n’est pas spécifique à Azure et est souvent employé par les administrateurs pour préconfigurer des images type de déploiement (plus de détail sur sysprep voir ici).

  • dans votre VM, lancer une ligne de commande en mode administrateur et exécuter c:\windows\system32\sysprep\sysprep.exe
  • Sélectionner les valeurs suivantes : “Enter System Out-of-Box Experience (OOBE)”, cochez “Generalize”, “Shutdown

    cmdline admincmdline system32 sysprep

    Cliquez sur le bouton “Ok” pour lancer la préparation de la VM.

syspreparing the VHD

Dès que la VM est préparer, sysprep effectue un arrêt de la VM.  NE RELANCER SURTOUT PAS LA VM car elle se reconfigurerait.

Les 2 fichiers .VHD sont maintenant paré pour un téléchargement vers Azure, mais … Azure n’est pas encore disposé à vous autoriser à envoyer ces fichiers…

 

Création d’un certificat personnel (.pfx)

 

Les envois des fichiers .Vhd sont signés et sécurisés par l’utilisation d’un certificat. Ce certificat permet d’autoriser l’utilisation de l’api de management d’Azure par l’outils d’upload des VHDs.

Si vous ne posséder pas déjà un certificat de management, vous pouvez en générer un avec Visual Studio, ou avec l’outils makecert :

  • Ouvrez une session ligne de commande “Visual Studio command Prompt” en tant qu’administrateur (clic doit, “run as administrator”).
  • Positionnez vous dans le dossier où générer le certificat
  • Entrez la commande suivante :

makecert -sky exchange -r -n "CN=VMRole_Demo" -pe -a sha1 -len 2048 -ss My "VMRole_Demo.cer" (remplacez le CN et le nom du fichier .Cer par vos propre valeur.)

image

Makecert à enregistrer le nouveau certificat dans le ‘store’ personnel.

Il nous faut maintenant exporter ce certificat dans un format compréhensible par Azure : .pfx. Pour se faire, lancer la console d’administration des certificats (Menu démarrer, “Exécuter” et tapez “certmgr.msc”. Sélectionnez le dossier ‘Personnel\Certificats’ et vous devez y retrouver le certificat nouvellement créé. Faites un clic droit dessus, sélectionner ‘tout les taches’ (‘all tasks’) puis  ’exporter’ (‘export’).

export cert

Répondez aux question du wizard d’export ( YES, OUI pour exporter la clé privée, et spécifier un mot de passe).

imageimageimageimage

imageimageimage

 

Les outils Azure auront besoin du “thumbprint” (empreinte numérique) du certificat : double clic sur le certificat dans le gestionnaire de certificat, sélectionner l’onglet “details”. L’empreinte numérique se trouve dans la liste : recopier la valeur ( 20 paires hexadécimale) ! (merci le notepad Sourire ).

detail cert

Ce certificat doit maintenant être déclaré dans votre abonnement azure. Connectez vous à la console d’administration Azure (http://windows.azure.com). Dans la zone “certificates management” des “hosted services”, cliquez sur “Add Certificate”, sélectionnez l’abonnement concerné et le fichier .cer qui vient d’être créé, cliquez sur “Done”. Au bout de quelques secondes le certificat est listé par la console d’administration.

imagecert uploaded

 

L’api de management connait maintenant notre certificat, nous pouvons commencer à télécharger chacun de nos deux fichiers VHD (le VHD de base, et celui de notre vm finale)

Lancer une ligne de commande du Sdk Azure ( Menu démarrer, tous les programmes, Windows Azure SDK v1.3, Windows Azure SDK Command Prompt) puis positionner vous dans le dossier qui contient vos VMs.

Entrez la commande :

csupload Set-Connection "SubscriptionId=VOTREIDSUBSCRIPTIONAZURE; CertificateThumbprint=VOTREEMPREINTE"

(insérer votre Azure SubscriptionId et l’empreinte de votre certificat au bon endroit) afin de mettre à jour les informations de connexion à votre souscription azure. Cette information est mémorisée sur le poste.

cs-upload Set-Connection

 

Entrez maintenant la commande de téléchargement :

csupload Add-VMImage –LiteralPath IMAGEDEBASE.vhd –Location "North Central US" –Name IMAGEDEBASE.vhd

Bien entendu, remplacez ‘IMAGEDEBASE’ par le nom de votre fichier VHD. L’utilisation d’un datacenter US est fortement recommandé pendant la période Beta (seul certains datacenter Azure sont équipés pour supporter ces fonctionnalités durant cette période).

csupload va monter le fichier .vhd, l’analyser et le préparer à un téléchargement (réduction de taille, …) puis déclencher le téléchargement vers Azure.

csupload addvm step 1csupload addvm step 2

csupload addvm step 3

Une fois le premier VHD en cours de téléchargement (“Preparing: 100% complete…”), faites de même pour le 2e fichier VHD correspondant à la VM finale. Un seul téléchargement de chaque vhd est nécessaire, ils peuvent être lancés simultanément.

en vous connectant sur l’interface d’administration d’Azure, vous verrez que la plateforme Azure indique que 2 “VM Role image” sont en cours de création.

image

 

La partie préparation des VHD et téléchargement est maintenant terminé.

Je vous donne rendez vous dans quelques jours pour une 2e billet concernant la création et la configuration des Role Azure afin d’instancier une (ou plusieurs) VM dans Azure.

Catégories :Visual Studio, Windows Azure Étiquettes : , , , ,

Journée ménage : Soucis pour désinstaller/réparer Visual Studio 2008 : UninstallTool.exe

Si comme moi, vous êtes un adepte des versions béta/CTP qui viennent se greffer sur Visual Studio 2008 sans être stable à 100%, il peut arriver un moment où notre pauvre vs2008 nécessite une bonne réinstallation … et c’est à ce moment là que l’on arrive plus à le désinstaller ou le réparer “a problem has been encountered while loading the setup components”.

Le moyen plus simple, est de télécharger le UninstallTool.Exe ici (http://msdn.microsoft.com/en-us/vstudio/bb968856.aspx) et de l’exécuter. Cet outils va faire le manage par le vide et forcer la suppression de Visual Studio 2008 de votre système. Terminez en enlevant les quelques éléments complémentaires (cf la page web). Et vous pourrez ensuite réinstaller un beau Visual Studio 2008 tout propre !

Catégories :Visual Studio

VSTO PowerTools … enfin

Que ceux qui m’ont entendu ralé au sujet des IDs d’Office à connaitre pour les projets VSTO (Visual Studio Tools for Office) soient remerciés (les équipes MS) ou rassurés (les participants à mes track TechDays).

Jusqu’a présent quand on avait besoin d’un ID office (icone, id de commande, …) le seul moyen pratique était un fichier XLS qui les listaient.

Et bien enfin, nous avons une extension à VS2008 qui les intègre directement dans l’IDE !!!!

cette Nouvelle fenetre s’active via le menu "Outils" ou "Tools":

 

 

Très utile aussi : le "nettoyeur de projet VSTO :

 

 

et le détecteur de problèmes : 

 

Plus d’autres tools concernant les workflow, une librairie pour la gestion des IHM des projets VSTO … Bref que du bon !!

Vous trouverez ces VSTO Power tools ici :http://www.microsoft.com/downloads/details.aspx?FamilyId=46B6BF86-E35D-4870-B214-4D7B72B02BF9&displaylang=en

 

Ils seront installés dans le dossier C:\Program Files (x86)\Microsoft VSTO Power Tools 1.0 (pour les 64bits) ou C:\Program Files\Microsoft VSTO Power Tools 1.0 (pour les OS 32bits)

 

Catégories :Visual Studio

La perte de l’intellisense XAML n’est pas une fatalité !

Et elle ne nécessite pas la réinstallation de VS2008.
Avec regedit (cf mon Regedit 64bits pour la version 64bits), examinez la clé HKEY_CLASSES_ROOT\CLSID\{73B7DC00-F498-4ABD-AB79-D07AFD52F395}\InProcServer32.
La valeur par défaut ne doit pas être vide. Si c’est la cas, vous subissez les effets d’un bug  !
Modifier la valeur par défaut pour qu’elle pointe sur la dll TextMgrP.dll ( c:\Program Files (x86)\Common Files\microsoft shared\MSEnv\TextMgrP.dll sur mon vista US 64bits).
relancer VS2008 … et oh magie, l’intellisense XAML est de retour !
 
Catégories :Visual Studio

CTP pour le support de SQL2008 dans VS2008

Catégories :Visual Studio

Visual Studio 2008 Team Suite English RTM disponible en téléchargement sur MSDN

La version RTM Anglaise de Vs2008 TeamSuite (la totale) est disponible en téléchargement pour les abonné(e)s MSDN depuis ce matin 6h00 … a vos downloads 🙂
Catégories :Visual Studio