Wenn Sie beabsichtigen, Benutzer/Administratoren zu ermöglichen, um die Zeichenfolge zu ändern, ich stimme mit den anderen Antworten, und ich würde vorschlagen, dass es in den Einstellungen setzen.
Wenn Sie nicht möchten, dass es nach der Bereitstellung bearbeitet werden kann und es nur von Ihnen und Ihren Entwicklern geändert wird, dann würde ich es in eine eingebettete Ressource einfügen (dies ist nicht das Gleiche wie eine .resx-Datei)). Sie würden es zur Laufzeit wie folgt zu lesen:
Assembly assembly = Assembly.GetExecutingAssembly();
Stream stream = assembly.GetManifestResourceStream(“MyAssemblyNamespace.MyTextFile.txt”);
StreamReader reader = new StreamReader(stream);
string theText = streamReader.ReadToEnd();
Update: Diese Lösung ist, die leicht zu pflegen ist. Die .txt-Datei ist nur eine weitere Datei in Ihrem Lösungs-Explorer in Visual Studio und Sie können sie wie jede andere Datei bearbeiten, unter Quellcodeverwaltung wie jede andere Datei usw. aufbewahren. Um sie zu einer eingebetteten Ressource zu machen, ändern Sie Build Aktion im Eigenschaftsfenster auf "Eingebettete Ressource".
Das Endergebnis ist, dass Ihre Datei (en) in Ihre DLL eingebettet werden, so dass Sie nur 1 DLL anstelle einer DLL und einen Ordner mit Dateien verteilen müssen, die sich zusammen bewegen müssen.
Update 2: In Bezug auf "Produktion Debugging" ist dies eine sehr statische Lösung, und Sie können den Inhalt der Textdatei zur Laufzeit nicht ändern, da die Datei in der DLL bei der Kompilierung gebacken wird Zeit. Um den Inhalt der Datei zu lesen, können Sie Tools wie reflector verwenden, um die eingebetteten Ressourcen einer DLL anzuzeigen. Sie könnten auch ein einfaches Befehlszeilentool schreiben, das alle eingebetteten TXT-Dateien aus einer DLL in einzelne Dateien ablegt, die Sie betrachten können.
Für die Speichernutzung gibt es keine effizientere Lösung als "Ich lade es nur genau dann aus einer Datei in den Speicher, wenn es benötigt wird". Sie müssen entscheiden, ob die verbesserte Wartbarkeit und Bereitstellung die Kosten von etwas mehr Speicher wert ist, wenn Ihre DLL für Ihre spezifische Situation in Arbeitsspeicher geladen wird. Das heißt, Sie haben nicht gesagt, wie groß diese Dateien sind. Wenn sie wirklich riesig sind (Megabytes +), würde ich wahrscheinlich nicht verwenden diese Lösung und würde mit losen Dateien auf der Festplatte gehen. Wenn sie im Allgemeinen ziemlich klein sind (Hunderte von Kilobytes), würde ich mir keine Gedanken um den zusätzlichen Speicher machen, es sei denn, Sie befinden sich in einer Art eingebetteter Gerätesituation, in der der RAM wirklich eng ist.
Danke - siehe meinen Kommentar zu den anderen Antworten, wie erfüllt diese Lösung meine Anforderungen? –
hinzugefügt einige Kommentare über Wartbarkeit ... –
Danke - aber was ist: 1. "Produktion Debugging" - wenn ich einige Verdacht habe, dass es Probleme mit der Version gibt es nicht einfacher für mich, die externe Textdatei zu öffnen? 2. Nehmen wir an, die Saite wird sehr groß und es wird auch andere Saiten geben. Mit Ihrer Lösung gehen sie alle in den Speicher, wenn die DLL geladen wird und machen auch ihre Größe groß. Wenn sie eine externe Datei sind, werden sie nur geladen, wenn (und wenn) ich sie brauche. –