0

我有一个.net窗体应用程序,我目前正在编写其中有许多我的程序使用的资源。有些图片,字体文件,脚本(我的程序调用脚本八度)等。如何在.net应用程序中存储应用程序数据/资源

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

+0

请解释这部分'我有不同的文件夹,我手动创建在我的程序的启动目录中,并通过Application.StartupPath'访问它们。对于调试和发布都有单独的文件,我没有看到任何错误。相反,试图整合调试和发布文件可能会导致一些令人讨厌的错误。 – Neolisk

+0

我认为Neolisk是一个很好的观点。有时你需要不同版本的资源,但很多时候你不需要单独的版本。但是,如果不需要单独的调试版本和发行版本,任何情况下都不会让您将资源置于通用目录中。 –

回答

2

你应该能够在程序本身存储资源。
访问项目的资源部分[Project menu =>“PROJECT NAME”Properties ... => Resources(left side)],并在其中添加文件。
您也可以通过双击它们来编辑资源。

在您的代码中,您应该在My命名空间下使用这些资源(My.Resources。“RESOURCE NAME”)。

资源的(代码)类型取决于哪种资源的添加它(参见左上角的下拉列表):

  • 形象成为System.Drawing.Bitmap
  • 图标变成System.Drawing.Icon
  • 字符串成为System.String
  • 文本文件变得System.String
  • 非文本文件成为一个阵列,System.Byte()
1

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

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

你可能有一个路径来装点资源名称,简单的方法来算出这个是调用

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

你可以得到一个小票友和创建多个.resx文件,经常用于国际化。

+0

我希望我可以选择两个答案都是正确的,因为两者都包含有用的信息。谢谢! –

相关问题