我正在开发一个wpf应用程序,其中包含一个按类别排序按钮的仪表板。每个按钮打开一个资源,可以是PDF,视频等。总共有12个类别,每个类别有60个科目和教材。总共720个。
现在我的设置如下: 对于每个主题,我将相关学习材料的文件名存储在数据库中(SubjectID:124;标题:“SomethingSmart”;资源:“SmartPDF.pdf”)。我的资源存储在每个类别/文件夹的硬盘上。因此,当我加载主题时,我在数据库中查找文件名,并在前面添加与该类别相关联的文件夹并加载文件。
现在有些东西告诉我这不是理想的设置。首先,因为所有文件都存储在硬盘驱动器上,如下所示:
其次,部署像这样的应用程序真是太荒谬了,“是的,首先将200 MB的资源复制到你的C:驱动器。 - 哦,你没有管理权限你说的那么?那太糟糕了。”
有更优雅的方式吗?虽然通过申请添加和删除教材的可能性仍然存在。
答案 0 :(得分:1)
有几种文件分发方法。
首先,如果您在可以访问某个共享服务器位置的Intranet应用程序中进行部署,则可以将文件存储在共享路径中。您可以在数据库中为每个有问题的资源保存的完整(绝对)路径。
其次,是将数据存储在用户可访问的文件夹(AppData或类似文件夹)中。我也喜欢拉塞尔的回答......
另一种方法是将数据作为二进制内容存储在数据库中。显然,这会显着增加数据库大小,并且文件不容易用于“自定义”访问,但这通常是一件好事,因为如果有人删除/移动/重命名文件,您的应用程序不必担心应用
答案 1 :(得分:0)
您可以使用Isolated Storage来存储文件。这是适用于您应用的.NET框架支持的文件存储区域,因此用户可以安装这些文件。
或者,您可以使用相对路径,并将它们存储在安装目录的子目录中。
例如:
您还可以将它们添加为资源,并编辑从嵌入到复制到输出目录的资源属性。