2013-05-27 2 views
3

Я пишу простой VS2012 AddIn, и я не уверен, где и как я должен хранить данные, которые мне нужно повторно использовать при следующем открытии AddIn. Я думал просто хранить данные в XML-файле в той же папке, что и двоичный файл, но затем я начал думать, что должен быть более умный способ сохранить пользовательские данные в AddIn, возможно, это обычное сохранение в системе или папке пользователя?Лучшая практика. Как я могу сохранить пользовательский ввод в Visual Studio AddIn?

Таким образом, мой вопрос: Есть ли какие-либо рекомендации по тому, как и где хранить данные из VS2012 AddIn?

Любая помощь очень ценится.

ответ

2

Если данные применяются на всей надстройке, независимо от зарегистрированного пользователя, я предлагаю, чтобы написать свой файл XML в папке, определенной Environment.SpecialFolder.CommonApplicationData

string commonPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)); 
string myAddinDataPath = Path.Combine(commonPath, "MyAddinName"); 
if(!Directory.Exists(myAddinDataPath)) Directory.CreateDirectory(myAddinDataPath); 

вместо этого, если у вас есть разные данные, основанные на текущий пользователь, напишите в папке, определенной Environment.SpecialFolder.ApplicationData

+0

Nice! Это было похоже на то, что я думал в качестве резервного плана, но я искал более простой «стандартный» способ для AddIns. Вы предлагаете это для сериализации для строки и использования интерфейса EnvDT Globals? Относно: http://msdn.microsoft.com/en-us/library/envdte.globals.aspx, http://msdn.microsoft.com/en-us/library/vstudio/96t389k3.aspx – Marcus

+0

@ Маркус, извините, мне не хватает опыта с добавками, чтобы давать советы. Обычно я предпочитаю уже сделанное решение, если оно доступно, поскольку производитель (Microsoft) этого решения (морально) обязан держать его в рабочем состоянии, но это не всегда происходит (см. Макрос в VS2012) – Steve

+1

Я согласен, я считал, что Globals в первое место, поскольку это уже сделанное решение для стойкости, но поскольку оно не может хранить массивы или объекты и требует, чтобы сериализация работала в моем случае, я думаю, что это никогда не предназначалось для сохранения чего-либо большего, чем флаги и слова длинные строки. На данный момент я реализую ваше решение, так как оно является более общим и легко проверяемым, поэтому также корректно укажем ваш ответ. Спасибо за помощь! – Marcus