2013-05-27 13 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

不错!这就是我在考虑的一个后备计划,但我正在寻找一种更直接的AddIns标准方式。你是否建议通过序列化字符串并使用EnvDTE Globals接口? 相关: http://msdn.microsoft.com/en-us/library/envdte.globals.aspx,http://msdn.microsoft.com/en-us/library/vstudio/96t389k3.aspx – Marcus

+0

@马库斯,对不起,我没有足够的经验来提供建议。通常我更喜欢已经制作好的解决方案,因为解决方案的制造商(微软)有责任保持它的运行,但这并不总是会发生(请参阅VS2012中的宏) – Steve

+1

我同意,我认为Globals在第一个地方,因为它是一个已经制定的持久性解决方案,但由于它不能存储数组或对象,并需要序列化在我的情况下工作,我认为它永远不会持续任何比标志和字长字符串更大的东西。现在,我将实施您的解决方案,因为它更通用且易于验证,因此也将您的答案标记为正确。感谢您的帮助! – Marcus