如何在.net应用程序中存储应用程序数据/资源

时间:2013-08-21 14:42:24

标签: .net vb.net visual-studio-2010 visual-studio design-patterns

我有一个.net表单应用程序,我目前正在编写,其中有许多我的程序使用的资源。一些图像,字体文件,脚本(我的程序调用八度脚本)等。

现在我有不同的文件夹,我在程序的启动目录中手动创建,并通过Application.StartupPath访问它们。然而,这导致我必须为调试版本和发布版本版本维护一组单独的文件,这些文件在过去已经引起了一些令人讨厌的错误。我在几个月之前编辑了一些八度脚本,并忘了将它们复制到发行脚本文件夹中。有没有更好的方法来引用资源?

2 个答案:

答案 0 :(得分:2)

您应该能够将资源存储在程序本身内 访问项目的参考资料部分[Project menu => “PROJECT NAME”属性... =>资源(左侧)],并在那里添加文件 您也可以通过双击来编辑资源。

在您的代码中,您应该在My namespace(My.Resources。“RESOURCE NAME”)下提供这些资源。

资源的类型(代码中)取决于您将其添加为哪种资源(请参阅左上角的下拉列表):

  • 图片成为System.Drawing.Bitmap
  • 图标成为System.Drawing.Icon
  • 字符串成为System.String
  • 文本文件成为System.String
  • 非文本文件成为一个数组,System.Byte()

答案 1 :(得分:1)

听起来你正在构建一个Windows应用程序,因为你没有提到使它听起来像一个Web应用程序的任何东西。我认为您应该能够将资源放入资源目录,该目录将构建时将资源链接到您的应用程序(您不必将资源文件标记为复制到输出目录)作为.resx的一部分文件。您可以通过打开项目属性来管理资源。对于具有图像属性的控件,您可以直接从.resx文件引用图像,如果需要将自定义资源加载到表单中,请尝试

this.GetType().Assembly.GetManifestResourceStream("yourresourcename.ext"); 

您可能必须使用路径装饰资源名称,一种简单的方法可以解决此问题

string[] resourcenames = this.GetType().Assembly.GetManifestResourceNames();

您可以获得更多的爱好者并创建多个.resx文件,通常用于国际化。