2010-07-26 4 views
3

Ceci est VS 2008 et .Net 3.5.VirtualPath dans AspNetCompiler MSBuild Task - doit-il être égal au dernier chemin virtuel déployé?

J'utilise un script de projet de déploiement personnalisé similaire au menu contextuel de publication, mais que j'ai personnalisé pour renommer des fichiers et divers autres éléments. Cela fonctionne très bien et a considérablement simplifié la procédure de libération.

J'ai été mis au courant d'un problème sur un de nos sites en direct ce week-end qui aurait été prévenu si le site avait été précompilé (longue histoire).

J'ai donc joué avec l'injection de la tâche AspNetCompiler MSBuild (en utilisant l'attribut PhysicalPath pour diriger vers le dossier de publication intermédiaire) dans le script de déploiement et j'ai une question concernant l'option 'VirtualPath'.

Malgré le fait que le site Web ne se trouve pas dans IIS à cette étape de pré-déploiement, vous devez toujours fournir une valeur pour l'attribut 'VirtualPath'. J'ai vu here que le commutateur -v associé sur aspnet_compiler.exe utilise cette valeur pour résoudre les chemins virtuels "~" root utilisés sur le site au cours de la compilation. Donc, je prends ceci pour signifier que tout ce que vous passez ici doit être la racine virtuelle de l'application lorsqu'il est déployé sinon cela ne fonctionnera pas. Cependant, j'ai essayé ceci, en passant quelque chose comme '/ fake/fake' dans cette option, puis en changeant une de mes pages maîtres pour référencer un css via une URL racine de l'application au lieu de relative, et encore travaillé même lorsqu'il est déployé sur un chemin virtuel de '/ site' et non '/ fake/faux'.

Alors, quelle est la réponse définitive à ce sujet? Ai-je besoin de m'inquiéter de ce que la valeur de VirtualPath soit exactement égale à l'emplacement déployé éventuel d'un site dans IIS? J'espère que non, car je ne veux pas vraiment que mon projet de déploiement ait une quelconque connaissance de la hiérarchie virtuelle du serveur web cible, au cas où il aurait besoin de changer.

Répondre

5

J'ai analysé le code qui est précompilé et il semblerait que le précompilateur résout automatiquement les chemins d'accès à l'application vers les chemins relatifs, indépendamment de ce que vous avez défini le VirtualPath. J'ai également essayé de déployer le même site pré-compilé sur différents chemins virtuels sur le serveur cible et rien ne casse.

Donc, je suis assez confiant pour pouvoir dire: non, peu importe quelle est cette valeur.

Sans aucun doute, il y a quelque chose que j'ai potentiellement raté - mais jusqu'à ce que je me trompe, je suppose que j'ai raison!

Questions connexes