Как использовать специальные папки Windows в пути в конфигурационном файле для сборки C# (4.)?
Я хотел бы иметь возможность установить путь в конфигурационном файле для моей сборки C# 4.0.
Вполне вероятно, что путь будет лежать к одной из специальных папок windows (CommonApplicationData). Однако в моем коде я не хочу предполагать, что в этом пути будет специальная папка, мне просто нужен простой/прямой способ расширить ее, если она есть.
Статический метод класса Path GetFullPath не улавливает окружение.SpecialFolder enum in a string path (я знаю, что это был большой вопрос, но я надеялся)
Поэтому я пошел смотреть на Environment. ExpandEnvironmentVariables, и это привело меня к CSIDL и KNOWNFOLDERID[^].
Мы все еще работаем на XP и добавляем поддержку Widnows 7 (я не думаю, что мы поддерживаем Vista)
Поэтому я полагаю, что мог бы поместить %CSIDL_COMMON_APPDATA% в путь в моем конфигурационном файле и использовать ExpandEnvironmentVariable (), предполагая, что я не устанавливаю Windows 7, и в этом случае я предполагаю, что мой установщик должен обновить конфигурационные файлы, чтобы использовать "Folderid_programmdata".
Именно так я должен решать эту проблему?
Есть ли лучшая практика для этого, которую я пропустил?
1. Как я должен представлять специальную папку windows в строке пути в конфигурационном файле?
2. Как мне расширить это представление в полный путь в моем коде?
Любой совет приветствуется, спасибо.
[Осветление]
Судя по реакции JSOPs это, наверное, просто выдаете желаемое за действительное, но я думал, я хотел бы уточнить, что именно я пытаюсь добиться:
Я понимаю окружающую среду.Перечисление SpecifalFolder и как использовать среду.Метод GetFolderPath, я даже могу преобразовать строковое представление специальной папки в путь:
Environment.GetFolderPath((Environment.SpecialFolder)Enum.Parse(typeof(Environment.SpecialFolder), mySpecialFolder))
Я стараюсь не разбивать свой путь на 2 части в конфигурации и не иметь дело с частью "SpecialFolder" отдельно, потому что на самом деле мы не можем использовать специальную папку.
Я хотел бы иметь возможность настроить свой путь следующим образом:
"C:\MyCompanyName\MyAppName\MyFolder"
или
"C:\Documents and Settings\All User\Application Data\MyCompanyName\MyAppName\MyFolder"
Но я бы предпочел не раскрывать явно специальную папку в конфигурационном файле.
Я хотел бы иметь возможность войти:
"%CSIDL_COMMON_APPDATA%\MyCompanyName\MyAppName\MyFolder"
или
"%FOLDERID_ProgramData%\MyCompanyName\MyAppName\MyFolder"
или
"%System.Environment.SpecialFolder.CommonApplicationData%\MyCompanyName\MyAppName\MyFolder"
или там, где мы не используем специальную папку, введите просто:
"C:\MyCompanyName\MyAppName\MyFolder"
И я спрашиваю, есть ли библиотечный метод, который позволит мне автоматически расширять % обернутые биты в пути (и это не упадет, если нет % искаженных битов)?
Я предполагаю из более раннего ответа JSOPs, что его нет.
[/Осветление]
Philippe Mori
Для папок Vista по сути похожа на Windows 7, поэтому нет никаких причин не поддерживать Vista, если вы поддерживаете XP.