2010-11-12 15 views
8

Mi chiedevo quali sono i diversi costi di assemblaggio di riferimenti in una soluzione .NET. Sono interessato ai costi tecnici e organizzativi.Qual è il costo dei riferimenti di assemblaggio non utilizzati?

Alcuni esempi:

  • L'Assemblea non impiegata contiene byte aggiuntivi per nave (download più lunghi, spazio sprecato)
  • L'Assemblea non utilizzato potrebbe contenere un buco di sicurezza sfruttabile
  • L'Assemblea non utilizzato potrebbe incorrere avvio addizionale costi
  • L'assemblaggio inutilizzato potrebbe comportare costi di revisione aggiuntivi (come questa domanda)
  • L'assemblaggio inutilizzato potrebbe confondere un nuovo sviluppatore
+0

Anche se l'assieme non utilizzato è stato spedito, non vedo come potrebbe rappresentare un rischio per la sicurezza. Dal momento che è inutilizzato, nessuno dei suoi codici viene mai eseguito (nemmeno i costruttori statici). – Heinzi

+0

@Heinzi: Sono totalmente con Marijn qui. Rimuovere il riferimento e non distribuire l'assemblaggio è un piccolo colpo che salva una tonnellata di domande stupide in seguito. –

+0

Non ho detto di non essere d'accordo con Marijn, al contrario: ci sono molte buone ragioni per non fare riferimento e non schierare assemblaggi non necessari. Non capisco il punto sulla sicurezza, dal momento che non riesco a pensare a nessun vettore di attacco che possa sfruttare un buco di sicurezza in un assemblaggio inutilizzato. – Heinzi

risposta

11

Se si fa riferimento a un assieme in un progetto ma in realtà non si utilizza alcun tipo in tale assieme, l'assieme non utilizzato non farà parte del prodotto finale. Il riferimento viene rimosso al momento della compilazione.

L'unico "overhead" di riferimento agli assembly non utilizzati è durante lo sviluppo in cui il riferimento a molti assembly inutilizzati può confondere lo sviluppatore su quali dipendenze ha il progetto. Ogni nuovo assembly nel tuo progetto creerà anche un sovraccarico per IntelliSense e il compilatore, ma nella maggior parte dei casi non te ne accorgerai.

ReSharper ha una funzione per analizzare se un assieme referenziato non è utilizzato.

+0

Grazie, hai qualche riferimento che rimanda al fatto che questo viene rimosso al momento della compilazione? –

+1

@RobertJeppesen: Non sono sicuro di aver letto in Essential .NET, Volume I di Don Box molti anni fa, ma puoi testarlo da solo compilando un progetto con "troppi" riferimenti e guarda all'assemblaggio risultante. –

0

Se non si utilizza nulla dall'assieme, vengono eliminati al momento della compilazione in modo che il costo non sia nulla.

1

A mio avviso, l'overhead organizzativo per me (e per i miei colleghi) a pensare a sui riferimenti non utilizzati (perché abbiamo bisogno di XML qui?) È una motivazione sufficiente per rimuoverli. Di conseguenza, non ho mai considerato l'impatto sulla distribuzione o sulle prestazioni.

Problemi correlati