Ich entwerfe ein Visual Studio-Projekt, das eine potenziell große Anzahl (bis zu ~ 300) von Skriptdateien verschiedener Typen verwenden wird. Diese Dateien werden nicht mit anderen Projekten geteilt, d. H. Sie sind exklusiv für das Projekt. Gibt es ein gutes Argument gegen alle diese Dateien als eingebettete Ressource (indem Sie ihre Build-Aktion festlegen) und dann Assembly.GetManifestResourceStream()
verwenden, um sie zur Laufzeit abrufen? Oder wäre dies ein Missbrauch von eingebetteten Ressourcen, und stattdessen sollte ein Dateisystemverzeichnis verwendet werden, das diese Ressourcen als Dateien enthält?Ist es eine schlechte Übung, eine große Anzahl von Skripten als eingebettete Ressource in ein Projekt aufzunehmen?
Die Vorteile von Embedded-Ressourcen zu sein scheinen:
- die erzeugte Baugruppe (über fehlende Skriptdateien oder ungültige Pfade sorgen, ohne dass einzelne Datei Deployment) ist einfach zu teilen und einsetzen;
- Isolation und Bequemlichkeit: auf alle Ressourcen kann innerhalb des VS-Projekts zugegriffen werden.
Die Argumente gegen diesen Ansatz sind in der Regel:
- Sie nicht die Ressourcen ohne erneute Kompilierung und Umschichtung der Baugruppe ändern können. Aber selbst für ein Projekt mit vielen textbasierten Ressourcen ist die resultierende Assembly eher klein und ebenso einfach wie das Überschreiben, z. Eine einzelne Dateisystem-Skriptdatei wäre. Und theoretisch sollte es möglich sein, nur den geänderten Teil der Assembly zu ersetzen (daher kleineres Update), aber mir ist nicht bekannt, ob solche existierenden Diff/Merge-Tools existieren.
- Die produzierte DLL wird größer sein, eventuell vielleicht signifikant; Andererseits ist die Gesamtgröße des zu implementierenden Programms dieselbe, wenn Sie eine schlanke Assembly ohne eingebettete Ressourcen erstellen und die Ressourcen separat in einem Verzeichnis bereitstellen.
Gibt es andere Überlegungen? Gibt es allgemein einen Grund dafür, dass Projektressourcen - unabhängig davon, was sie sind - nicht als eingebettete Ressourcen enthalten sein sollten, abgesehen von der erforderlichen Neukompilierung der Baugruppe im Falle einer Änderung?