2010-01-13 4 views
9

Je suis relativement nouveau à la programmation ASP.NET (mais pas la programmation en général), et j'ai regardé un projet qui m'a été confié. Dans ce projet, il existe un répertoire bin qui contient une série de fichiers DLL différents. Puis, dans le fichier web.conf, à l'intérieur de la structure des assemblages (dans le fichier XML), il y a une série d'autres assemblages ajoutés.ASP.NET - bin Répertoire vs Ajout de l'assemblage dans web.conf

J'ai fait une recherche à la fois sur SO et par Google en général, et je me débats encore sur la différence entre les deux. Est-ce qu'un moyen est «meilleur» que l'autre? Toute clarification qui pourrait être fournie serait très appréciée.

Merci.

Répondre

8

Il existe plusieurs façons de faire référence à des ensembles (DLL, généralement) dans une application ASP.NET:

  1. Ajouter la DLL dans le répertoire "bin" de votre application. Cela crée une référence implicite dans chaque fichier de code et fichier ASPX dans votre application à cette DLL. Cela signifie que le code dans un fichier ASPX ou dans un fichier CS dans App_Code peut utiliser les types dans cette DLL.

  2. Ajoutez une référence à la DLL dans la section <assemblies> de web.config. Voir MSDN pour plus de détails sur la syntaxe. Il existe généralement plusieurs fichiers web.config qui s'appliquent à une application Web particulière. L'application elle-même peut avoir plusieurs fichiers web.config (par exemple, un web.config dans un dossier particulier peut ajouter ses propres références). Il existe également un fichier web.config (ou machine.config) global qui contient des références disponibles pour toutes les applications ASP.NET sur l'ordinateur.

  3. Utilisez la directive <%@ Assembly Name="" %> dans un fichier ASPX (ou ASCX ou MASTER) particulier. Voir MSDN pour plus de détails sur la syntaxe.

Les références dans un fichier donné dans une application ASP.NET sont une combinaison des éléments applicables ci-dessus. La raison pour laquelle vous devez référencer les assemblys est que les fichiers ASPX (tout comme les fichiers CS et VB eux-mêmes) sont éventuellement compilés soit par le compilateur C# soit par le compilateur VB. Pour que ces compilateurs sachent quels types vous voulez utiliser, ils doivent savoir quels assemblages contiennent ces types.

+0

Merci pour la réponse! Bonne information. Une question - entre 1 et 2, y a-t-il une raison pour laquelle je choisirais l'une plutôt que l'autre? – JasCav

+1

Vous choisirez # 1 si la DLL n'a pas de signature de nom forte, auquel cas elle * ne peut pas * être dans le GAC car le GAC exige que l'assembly soit signé. Vous choisirez # 2 si la DLL est installée dans le GAC. Ainsi, ce n'est pas vraiment un «choix» en soi, mais plutôt une matrice de décision. – Eilon

1

Le répertoire bin est une copie de toutes les DLL construites et référencées par votre projet. Lorsque l'application Web est en cours d'exécution, elle recherche dans le répertoire bin la DLL physique dont elle a besoin pour exécuter l'application Web.

+0

Votre deuxième paragraphe contient des instructions incorrectes. Les DLL référencées par web.config ne sont absolument jamais copiées dans le répertoire bin - * ever *. – Eilon

Questions connexes