如何处理.net应用程序中的大量应用程序资源?

时间:2011-12-12 10:31:47

标签: .net wpf application-design file-handling

我正在开发一个wpf应用程序,其中包含一个按类别排序按钮的仪表板。每个按钮打开一个资源,可以是PDF,视频等。总共有12个类别,每个类别有60个科目和教材。总共720个。

现在我的设置如下: 对于每个主题,我将相关学习材料的文件名存储在数据库中(SubjectID:124;标题:“SomethingSmart”;资源:“SmartPDF.pdf”)。我的资源存储在每个类别/文件夹的硬盘上。因此,当我加载主题时,我在数据库中查找文件名,并在前面添加与该类别相关联的文件夹并加载文件。

现在有些东西告诉我这不是理想的设置。首先,因为所有文件都存储在硬盘驱动器上,如下所示:

  • C:\ TeachingMaterials /组别/ pdf1.pdf
  • C:\ TeachingMaterials /组别/ pdf2.pdf
  • C:\ TeachingMaterials /类别2 / pdf1.pdf
  • C:\ TeachingMaterials /类别2 / video2.pdf

其次,部署像这样的应用程序真是太荒谬了,“是的,首先将200 MB的资源复制到你的C:驱动器。 - 哦,你没有管理权限你说的那么?那太糟糕了。”

有更优雅的方式吗?虽然通过申请添加和删除教材的可能性仍然存在。

2 个答案:

答案 0 :(得分:1)

有几种文件分发方法。

首先,如果您在可以访问某个共享服务器位置的Intranet应用程序中进行部署,则可以将文件存储在共享路径中。您可以在数据库中为每个有问题的资源保存的完整(绝对)路径。

其次,是将数据存储在用户可访问的文件夹(AppData或类似文件夹)中。我也喜欢拉塞尔的回答......

另一种方法是将数据作为二进制内容存储在数据库中。显然,这会显着增加数据库大小,并且文件不容易用于“自定义”访问,但这通常是一件好事,因为如果有人删除/移动/重命名文件,您的应用程序不必担心应用

答案 1 :(得分:0)

您可以使用Isolated Storage来存储文件。这是适用于您应用的.NET框架支持的文件存储区域,因此用户可以安装这些文件。

或者,您可以使用相对路径,并将它们存储在安装目录的子目录中。

例如:

  • MyWPFApp.exe
  • 资源\
  • Resources \ pdf1.pdf ...

您还可以将它们添加为资源,并编辑从嵌入到复制到输出目录的资源属性。