我正在使用Windows窗体和c#3.0编写应用程序。我想知道是否有建议的方法来保持数据的跨时间。但是,我不想触摸它正在运行的机器,因此,我想将数据存储在二进制可执行文件中(最好,因为不需要用随机配置文件来混淆用户的文件夹)。
因此,如果有人对如何做到这一点有任何想法,那将非常感谢!
杰森
答案 0 :(得分:10)
如果您要存储配置信息 - app.config或设置文件可能就是您的选择。
如果您要存储用户数据 - 您应该真正允许用户控制保存位置 - 并且更喜欢计算机上的\ User \ Username文件夹。
关于将它存储在中的格式......你当然可以使用像SQLLite这样的东西 - 但是如果你没有存储真正的二进制数据,XML也没有任何问题。 .NET offers a number of APIs将对象图转换为XML表示形式 - 您可能需要查看它。
如果您不想在本地用户的计算机上存储任何 ,您可能需要上传用户数据的网络数据库或网络服务。只需确保您的用户明白这一点 - 许多人不喜欢他们的私人数据未经他们同意就被发送到网络上。
您真的不想修改可执行文件。许多病毒扫描程序隔离内容或大小不断变化的可执行文件 - 作为主动防止病毒和恶意软件感染的方法机。你不想去那里。
答案 1 :(得分:4)
不要修改可执行文件。添加单个SQLite数据库是一个更好的解决方案。
答案 2 :(得分:2)
隔离存储是另一种选择。
答案 3 :(得分:0)
SQLite是您正在寻找的并且与c#
兼容答案 4 :(得分:0)
如果您不想将数据存储在最终用户PC上的SQLite数据库中,您可以调用另一台服务器上的Web服务,该服务器将其数据存储在SQL Server或其他内容中。
答案 5 :(得分:0)
我不相信Windows窗体项目可以像这样修改自己(我曾经试图找到一种方法来自己做这个)。某种形式的托管应用程序,例如silverlight应用程序(其中应用程序本质上是一个zip文件)可能是要走的路。 Silverlight应用程序虽然需要silverlight插件(我仍然不确定是否允许Silverlight应用程序自行修改)。
我认为某种配置文件可能是优先的,并且不会留下太多混乱。
确保您的应用程序完全自包含的一种方法是在编译项目后使用ThinStall之类的程序。这会虚拟化应用程序,并可以在.exe文件内部为其提供自己的文件系统或注册表。
可执行文件自身更改的一种方法是在其中放入另一个可执行文件(嵌入为资源,然后在需要时将其提取到文件中)。然后,这个可执行文件可以修改第一个,但我不认为它有任何框架可以做到这一点,因此需要知道要改变什么以及在哪里。