6
votes

Projet de déploiement Web: Publier sans précompilation

la question

est-il possible de publier un projet d'application Web à l'aide d'un projet de déploiement Web sans précompilation?

Notes

Afin de Départiez les commandes Web et les pages dans un assemblage distinct, j'utilise un virtualpathPathProvider personnalisé pour charger ces ressources. J'utilise des projets de déploiement Web et Msbuild à la ligne CMD pour déployer ces projets.

Le creux de la matière est que VirtualPathProviders ne sont pas pris en charge pour des applications précompilées. J'ai trouvé une solution de contournement pour des fichiers réguliers ici . Cependant, cela ne fonctionne pas pour les fichiers d'application tels que ASCX et ASPX . Il jette une exception dans le sens de "Le fichier n'a pas été pré-compilé et ne peut pas être demandé".

En conséquence, j'ai décidé d'essayer d'abandonner la précompilation et de prendre la performance de la demande initiale frapper depuis notre trafic de site n'est pas particulièrement élevé. Cependant, je ne peux pas comprendre comment faire cela à l'aide de projets de déploiement Web, déjà très cuit dans notre processus de construction.

[mettre à jour]

Je cherche à personnaliser le fichier Microsoft.WebDeployment.Targets afin de l'accomplir, mais je n'ai eu aucune chance jusqu'à présent.

[mettre à jour]

En creusant dans le fichier Microsoft.WebDeployment.Targets, j'ai constaté qu'il n'y avait pas de moyen simple de découpler des projets de déploiement Web de la précompilation de l'application Web. En fait, je ne suis pas certain qu'il y ait besoin de. Ce que je suis maintenant en utilisant à la place, c'est quelque chose de ressemblant à l'extrait suivant. Je viens de le mettre dans le fichier de projet avec une condition d'attrape à ne pas déployer pour les constructions de débogage. xxx

Il semble que tout cela soit tout ce qui est nécessaire pour déployer un projet sans précompilation. Faites-moi savoir si vous trouvez quelque chose de mieux.


1 commentaires

+1: J'aimerais connaître la réponse aussi si, j'espère que cela aide avec la prime :)


3 Réponses :


1
votes

Peut-être que je manque quelque chose (je n'ai aucune expérience avec VirtualPathProviders), mais si vous voulez simplement que vos fichiers ASPX & ASCX ne soient pas précompilés, cochez la case "Autoriser ce site précompilé d'être mis à jour" dans la compilation section des pages de propriété du projet de déploiement (pour la configuration que vous utilisez).

de MSDN :

Autoriser ce site précompilé d'être mis à jour

Spécifie que le contenu des pages .aspx n'est pas compilé dans une assemblée; Au lieu de cela, le balisage est laissé tel quel, vous permettant de changer HTML et fonctionnalité côté client après précompilation du site Web. La sélection de cette case à cocher est équivalente à l'ajout de l'option -U à la COMMANDE ASPNET_COMPILER.EXE.


1 commentaires

Oui, cela laisse la mise à jour du code côté client, mais le site est toujours précompilé, ce qui signifie que je ne peux pas utiliser un fournisseur de chemin virtuel.



0
votes

J'ai eu le succès de la mise à jour des fichiers ASPX sans recompilation en ouvrant simplement les fichiers ASPX individuels dans Visual Studio sans ouvrir l'ensemble du projet / solution.

J'espère que cela aide.


0 commentaires

2
votes

Pour faire fonctionner VirtualPathProvider avec un site Web précompilé (ou au plus partiellement précompilé), vous devez faire ce que Alconja dit en conjonction à ce http://sunali.com/2008/01/09/virtualpathProvider-in-precompiled-web-sites/

à la place commune" appinitialize ": xxx

Utilisez ceci: xxx

selon référence, filtre d'action original Sites Web précompilisés. Vous pouvez réaliser ce que vous souhaitez intercepter de registerVirtualPathProviderinternerner à l'aide de la réflexion, en plus de la méthode Normal RegisterVirtualPathPathPathPathPathProvider.


0 commentaires