2014-05-05 9 views
5

ich eine Lösung mit etwa 3 Projekte in der Lösung haben. Diese 3 Projekte haben einige gemeinsame Konstanten, die ich bisher zwischen den 3 Projekten kopiert und eingefügt habe.eine DLL-Assembly erstellen mit Konstanten

Was will ich stattdessen zu tun ist eine Assembly erstellen, die diese Konstanten enthält und verweisen nur die Baugruppe aus dem anderen Projekt. Das Problem ist, ich glaube, ich erinnere mich, irgendwo einmal, dass, wenn das Projekt kompiliert wird, werden die konstanten Werte einfach „kopiert und eingefügt“ von der Baugruppe in die Montage Referenzierung es. Das würde bedeuten, dass ich, wenn ich den Wert einer dieser Konstanten ändern wollte, nicht einfach die eine Assembly ändern konnte. Ich müsste die gesamte Lösung neu kompilieren.

Kann jemand bitte bestätigen, ob dies wahr ist, und wenn es mir bitte die bevorzugte und alternative Art und Weise sagen, dies zu tun, so dass ich nur die Konstante in meinem Montag ändern?

+0

Es hängt davon ab, wie Sie Ihre Anwendung bereitstellen. Wenn Sie alles in einer einzigen ausführbaren Datei zusammenführen, müssen Sie das Ganze natürlich neu kompilieren. Wenn Sie nur auf eine externe DLL verweisen, müssen Sie diese .dll nur durch Ihre neue Konstante ersetzen. – Pantelis

Antwort

9

Statt const Werte zu erklären, die tatsächlichen Werte in einer statischen Klasse deklariert.

Das wird Ihr Programm zwingen, die aktualisierte Konstante zu verwenden, wenn Sie es in der verknüpften DLL ändern.

Für das, was es wert ist, eine Art von Konfigurationsdatei ist wahrscheinlich eine bessere Lösung, wenn Sie diese zur Laufzeit tun wollen, anstatt Zeit zu kompilieren.

Weiterführende Literatur
Static readonly vs const — different assemblies POV?