2010-01-13 12 views
9

Sono relativamente nuovo alla programmazione ASP.NET (ma non alla programmazione in generale) e ho esaminato un progetto che mi è stato consegnato. All'interno di questo progetto, c'è una directory bin che contiene una manciata di vari file DLL.ASP.NET - bin Directory e aggiunta di assembly in web.conf

Quindi, nel file web.conf, all'interno della struttura degli assiemi (all'interno dell'XML), è stata aggiunta una serie di altri assembly.

Ho effettuato una ricerca sia su SO che su Google in generale, e sto ancora cercando di capire quale sia la differenza tra i due. È un modo "migliore" rispetto all'altro? Qualsiasi chiarimento che può essere fornito sarebbe più apprezzato.

Grazie.

risposta

8

Ci sono diversi modi per fare riferimento assemblee (DLL, di solito) in un'applicazione ASP.NET:

  1. Aggiungere la DLL nella directory "bin" dell'applicazione. Ciò crea un riferimento implicito in ogni file di codice e file ASPX nell'applicazione a quella DLL. Ciò significa che il codice all'interno di un file ASPX o all'interno di un file CS in App_Code può utilizzare i tipi in quella DLL.

  2. Aggiungere un riferimento alla DLL nella sezione <assemblies> in web.config. Vedere MSDN per i dettagli sulla sintassi. Esistono in genere più file web.config che si applicano a una particolare applicazione Web. L'applicazione stessa può avere diversi file web.config (ad esempio, un web.config in una particolare cartella potrebbe aggiungere i propri riferimenti). Esiste anche un web.config (o machine.config) globale con riferimenti disponibili per tutte le applicazioni ASP.NET sul computer.

  3. Utilizzare la direttiva <%@ Assembly Name="" %> in un determinato file ASPX (o ASCX o MASTER). Vedere MSDN per dettagli sulla sintassi.

I riferimenti in un determinato file in un'applicazione ASP.NET sono una combinazione degli elementi applicabili di cui sopra.

Il motivo per cui si deve fare riferimento agli assembly è che i file ASPX (molto simili ai file CS e VB stessi) vengono compilati dal compilatore C# o VB. Affinché questi compilatori sappiano quali tipi si desidera utilizzare, è necessario sapere quali sono gli assembly che contengono tali tipi.

+0

Grazie per la risposta! Buona informazione Una domanda - tra 1 e 2, c'è qualche ragione per scegliere l'una rispetto all'altra? – JasCav

+1

Scegli # 1 se la DLL non ha una firma di nome sicuro, nel qual caso * non può * essere nel GAC perché GAC richiede che l'assembly sia firmato. Sceglier # 2 se la DLL è installata nel GAC. Quindi, non è realmente una "scelta" di per sé, ma più una matrice decisionale. – Eilon

1

La directory bin è una copia di tutte le DLL create e referenziate dal progetto. Quando l'applicazione web è in esecuzione, cerca nella directory bin la dll fisica di cui ha bisogno per eseguire l'applicazione web.

+0

Il tuo secondo paragrafo ha dichiarazioni errate. Le DLL referenziate da web.config non sono assolutamente mai copiate nella directory bin - * ever *. – Eilon

Problemi correlati