Question

Supposons que vous ayez deux projets d’application Web ASP.NET distincts qui doivent tous deux utiliser une MasterPage commune.

Quelle est la meilleure façon de partager la MasterPage entre des projets sans avoir à dupliquer le code ?De préférence sans avoir à recourir au contrôle de source ou au piratage du système de fichiers.

Était-ce utile?

La solution

J'ai essayé d'accomplir la même chose.J'étudie quelques solutions, mais je pense que l'utilisation d'un répertoire virtuel est probablement le meilleur moyen de partager des pages maîtres.

Voici quelques sources que vous pouvez consulter.

Les troisièmes puces vers la fin de l'article vous indiquent les manières possibles de partager également des pages maîtres.

Autres conseils

De K.Celui de Scott Allen Pages maîtres ASP.Net :Trucs, astuces et pièges article, sur "Partage de pages maîtres":

La première alternative consiste à copier des fichiers de page maître partagés en un seul emplacement sur un serveur Web IIS.Chaque application peut ensuite créer un répertoire virtuel en tant que sous-répertoire et pointer le répertoire virtuel vers le répertoire réel des pages maîtres.Les applications peuvent ensuite définir la propriété MasterPageFile d'une page au nom du répertoire virtuel, plus le nom du fichier de page maître.Lorsque nous supprimons un fichier de page maître mis à jour dans le répertoire réel, la nouvelle page maître apparaîtra immédiatement dans toutes les applications.

Une deuxième approche consiste à utiliser un système de contrôle de version pour partager un ensemble de fichiers de page maître sur plusieurs projets.La plupart des systèmes de contrôle / contrôle de version source prennent en charge un certain niveau de fonctionnalité «partager», où un fichier ou un dossier peut apparaître dans plusieurs projets.Lorsqu'un développeur vérifie un fichier de page maître mis à jour, les autres projets verront immédiatement le changement (bien que ce comportement soit généralement configurable).Dans la production et le test, chaque application devrait être redéployée pour que la page Master de mise à jour apparaisse.

Enfin, le VirtualPathProvider dans ASP.NET 2.0 peut servir des fichiers qui n'existent pas sur le système de fichiers.Avec VirtualPathProvider, un ensemble de pages maîtres pourrait vivre dans des tables de base de données que toutes les applications utilisent.Pour un excellent article sur VirutalPathProvider, voir «Virtualisation de l'accès au contenu :Servir votre site Web à partir d'un fichier ZIP”.

Conservez une copie principale dans le contrôle de source et laissez votre système de contrôle de source s'en soucier.

Supposons que vous puissiez créer un référentiel commun pour tous vos projets (un dossier commun dans votre arborescence de contrôle de code source, par exemple), vous pouvez ajouter les pages maîtres sous forme de liens en utilisant des chemins relatifs.

Cependant, IIRC et Visual Studio effectuent des copies locales des fichiers ajoutés à partir de chemins externes.Vous devrez peut-être modifier le texte du fichier solution/projet pour ajouter les fichiers liés.

Ceci, bien sûr, suppose que vous utilisez le format « Application Web ».Les anciens "sites Web" VS n'ont pas de fichiers de projet et reposent sur la présence de tous les fichiers dans le dossier du site.

AFAIK, il n'y a pas de façon élégante de faire ce que vous cherchez.VS finira toujours par le copier.

Je pense que pour être honnête, ce n'est peut-être pas une bonne idée.Évidemment, vous souhaitez partager le code commun le plus bas, mais une MasterPage entière ?..On dirait que vous pourriez poser des problèmes, car un changement mineur pourrait avoir un tel impact sur une ou plusieurs applications.

Je suggérerais plutôt de séparer les bonnes fonctionnalités en composants/contrôles et de les déployer.

Je ne vois pas pourquoi vous voudriez avoir le même balisage dans différents projets, si vous le faites, je ne connais pas de moyen simple.

Cependant, avec le code, vous pouvez évidemment écrire un fichier de code qui hérite de

System.Web.UI.MasterPage

Mettez la logique que vous voulez dans toutes vos pages maîtres.Construisez-le comme votre superbe DLL, puis incluez-le simplement dans vos projets.

Utiliser un lien symbolique:

Un lien symbolique est un objet de système de fichier qui pointe vers un autre objet système de fichiers.L’objet pointé s’appelle la cible.Les liens symboliques sont transparents pour les utilisateurs ;Les liens apparaissent comme des fichiers ou des répertoires normaux et peuvent être agi par l'utilisateur ou l'application de la même manière.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top