Подчеркивает в названии компании при использовании C # Settings & LocalFileSettingsProvider - PullRequest
4 голосов
/ 11 ноября 2009

Я заметил, что при использовании объекта «Настройки», созданного приложением Windows Forms, любые пробелы в поле «Название компании» в информации о сборке заменяются подчеркиванием в пути к файлу user.config. Например, в XP путь к файлу user.config будет выглядеть примерно так:

\Documents and Settings\user\Local Settings\Application Data\Company_Name_Here\App\Version\user.config

Но, похоже, это происходит только с моими приложениями. На моем компьютере установлено много приложений .NET, но ни одно из других имен каталогов в разделе «Данные приложения» не содержит подчеркивания (пробелы сохраняются).

Что дает? Это не имеет большого значения, но мне просто интересно, почему это, кажется, происходит только с моими приложениями, и есть ли способ изменить это поведение, о котором я не знаю.

1 Ответ

0 голосов
/ 13 января 2012

Цитата кто-то, кто работал в Microsoft

- обычно это строка, указанная атрибутом AssemblyCompanyAttribute (с оговоркой, что строка экранируется и усекается по мере необходимости, и если она не указана в сборке, у нас есть процедура отката).

и

В: Почему путь такой неясный? Есть ли способ изменить / настроить его?

A: Алгоритм построения пути должен отвечать определенным строгим требованиям с точки зрения безопасности, изоляции и надежности. Несмотря на то, что мы пытались сделать путь как можно более простым для обнаружения, используя дружественные строки, предоставляемые приложением, невозможно сохранить путь простым, не сталкиваясь с такими проблемами, как коллизии с другими приложениями, подмена и т. Д.

LocalFileSettingsProvider не предоставляет способ изменить файлы, в которых хранятся настройки. Обратите внимание, что сам провайдер в первую очередь не определяет местоположение файла конфигурации - это система конфигурации. Если по какой-то причине вам необходимо сохранить настройки в другом месте, рекомендуется написать свой собственный поставщик настроек. Это довольно просто реализовать, и вы можете найти примеры в .NET 2.0 SDK, которые показывают, как это сделать. Имейте в виду, однако, что вы можете столкнуться с теми же проблемами изоляции, упомянутыми выше.

может дать намек на объяснение.

Таким образом, другие приложения могли использовать отдельного поставщика настроек, который поддерживает пробелы.

Также упоминаются ограничения поставщика настроек .NET по умолчанию здесь :

Каждый параметр приложения должен иметь уникальное имя; имя может быть любой комбинацией букв, цифр или подчеркивания, которое не начинается с цифры и не может содержать пробелов. Имя можно изменить через свойство Name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...