Если вы намерены разрешить пользователям/администраторам изменять строку, я согласен с другими ответами и предлагаю поместить ее в настройки.
Если вы не хотите, чтобы его можно было редактировать после развертывания, и он будет изменен только вами и вашими разработчиками, я бы поместил его во встроенный ресурс (обратите внимание, это не то же самое, что файл .resx). Вы бы прочитали это во время выполнения следующим образом:
Assembly assembly = Assembly.GetExecutingAssembly();
Stream stream = assembly.GetManifestResourceStream(“MyAssemblyNamespace.MyTextFile.txt”);
StreamReader reader = new StreamReader(stream);
string theText = streamReader.ReadToEnd();
Обновление: это решение легко поддерживать. Файл .txt будет просто еще одним файлом в вашем обозревателе решений в Visual Studio, и вы можете редактировать его, как и любой другой файл, держать его под контролем исходного кода, как и любой другой файл, и т. д. Чтобы превратить его во встроенный ресурс, изменив Build Действие в окне свойств на «Встроенный ресурс».
Конечным результатом является то, что ваши файлы встраиваются в вашу DLL, так что у вас есть только 1 DLL для распространения вместо DLL и папки с файлами, которые должны перемещаться вместе.
Обновление 2: что касается "производственной отладки", это очень статичное решение, и поэтому вы не сможете изменить содержимое текстового файла во время выполнения, поскольку файл запекается в DLL в время компиляции. Для чтения содержимого файла вы можете использовать такие инструменты, как reflector для просмотра встроенного ресурсы DLL. Вы также можете написать простой инструмент командной строки, который выгружает все встроенные файлы .txt из DLL в отдельные файлы, чтобы вы могли их просмотреть.
Для использования памяти нет более эффективного решения, чем «загружаю из файла в память только тогда, когда это необходимо». Вы должны решить, стоит ли улучшенная ремонтопригодность и развертывание затрат на небольшую дополнительную память, когда ваша DLL загружается в память для вашей конкретной ситуации. Тем не менее, вы не сказали, насколько велики эти файлы. Если бы они были действительно огромными (мегабайты+), я бы, вероятно, не использовал это решение и использовал бы свободные файлы на жестком диске. Если они, как правило, довольно малы (сотни килобайт), я бы не стал беспокоиться о дополнительной памяти, если только вы не находитесь в какой-то ситуации со встроенным устройством, где ОЗУ действительно мало.
person
Erv Walter
schedule
11.05.2009