2008-09-17 5 views
1

Imaginons que vous ayez une solution avec deux projets de site Web, Site Web A et Site Web B. Maintenant, dans le dossier App_Code de Website A, une classe X est définie dans un fichier ClassX.cs. Que faites-vous si le site Web B a également besoin d'accéder à ClassX.cs?Utilisation des mêmes classes App_Code sur des sites Web

Est-il possible de partager ce fichier sur les dossiers App_Code? Supposons que le déplacement du fichier vers une bibliothèque commune est hors de question.

Répondre

1

S'il vous plaît ne pas utiliser ces projets de site Web impies s'il vous plaît. Utilisez à la place des projets d'application Web, emballez vos classes partagées dans un projet de bibliothèque et référencez-les dans toutes vos applications Web.

+0

'Unholy' est un mot assez fort. Il existe des raisons légitimes d'utiliser le modèle WebSite. Toutes les applications Web ne sont pas des applications d'entreprise déployées avec trois environnements gérés. –

+0

Je ne vois aucune raison d'utiliser des projets de site Web. Je pense que les applications web sont plus professionnelles en ce qui concerne l'utilisation d'un processus de développement, de processus de construction, d'assurance qualité, de développement partagé, etc. Quelles sont vos raisons d'utiliser des projets de site Web? Et oui, 'impie' pourrait être un peu trop fort - mais seulement un peu ... – JRoppert

1

Emballez vos classes partagées dans une bibliothèque (une DLL) et à partir de chaque site, cliquez avec le bouton droit sur ajouter une référence et sélectionnez la bibliothèque que vous avez créée.

0

Je ne crois pas qu'il existe un moyen sans déplacer ClassX dans un nouveau projet de bibliothèque de code. .NET requiert que toutes les dépendances d'un assembly existent dans le même dossier que l'assembly lui-même ou dans le GAC pour être automatiquement détecté.

Vous pouvez essayer de charger l'assemblage manuellement via les classes de réflexion, même si c'est un peu hacky.

La meilleure solution, si vous avez le temps disponible et l'envie de l'entreprendre, serait d'aller avec la solution de JRoppert de le déplacer vers un projet d'application web. Vous pouvez ensuite utiliser des références Web (qui fonctionnent aussi bien que des références régulières dans VS) pour faire référence à ClassX.

HTH

1

Avec la restriction de « On suppose que le déplacement du fichier à une bibliothèque commune est hors de question. » La seule façon de faire cela est d'utiliser des points de jonction NTFS pour créer un lien symbolique pour avoir le même fichier .cs dans les deux dossiers.

Ceci est une option terrible (pour des raisons de version) ... le déplacer vers une bibliothèque commune est la meilleure option.

est ici l'entrée de Wikipedia sur les points de jonction NTFS http://en.wikipedia.org/wiki/NTFS_junction_point

et voici un outil pour les créer http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx

+0

J'ai essayé de faire fonctionner ça pendant 2 ans maintenant (le versionnage n'est pas un problème dans le projet sur lequel je travaille). Je n'ai jamais entendu parler de jonctions. Merci beaucoup! – Wolverine