我有一个我目前正在编写的 .net 表单应用程序,其中我有许多我的程序使用的资源。一些图像、字体文件、脚本(我的程序称为 octave 脚本)等。
现在,我在程序的启动目录中手动创建了不同的文件夹,并通过 Application.StartupPath 访问它们。然而,这导致我不得不为调试构建和发布构建版本维护一组单独的文件,这在过去导致了一些令人讨厌的错误。我在几个月前的调试中编辑了一些 octave 脚本,忘记将它们复制到发布脚本文件夹中。有没有更好的方法来引用资源?
我有一个我目前正在编写的 .net 表单应用程序,其中我有许多我的程序使用的资源。一些图像、字体文件、脚本(我的程序称为 octave 脚本)等。
现在,我在程序的启动目录中手动创建了不同的文件夹,并通过 Application.StartupPath 访问它们。然而,这导致我不得不为调试构建和发布构建版本维护一组单独的文件,这在过去导致了一些令人讨厌的错误。我在几个月前的调试中编辑了一些 octave 脚本,忘记将它们复制到发布脚本文件夹中。有没有更好的方法来引用资源?
您应该能够在程序本身内存储资源。
访问您项目的资源部分 [Project menu => "PROJECT NAME" Properties... => Resources(left side)],并在那里添加文件。
您还可以通过双击资源来编辑它们。
在您的代码中,您应该在 My 命名空间 (My.Resources."RESOURCE NAME") 下提供这些资源。
资源的类型(在代码中)取决于您将其添加为哪种资源(参见左上角的下拉列表):
听起来您正在构建一个 Windows 应用程序,因为您没有提及任何使它听起来像 Web 应用程序的东西。我认为您应该能够将资源放入资源目录中,该目录将在您构建时将资源与您的应用程序链接起来(您不必将资源文件标记为复制到输出目录)作为 .resx 的一部分文件。您可以通过打开项目属性来管理您的资源。对于图像属性的控制,您可以简单地直接从 .resx 文件中引用图像,如果您需要将自定义资源加载到表单中,请尝试
this.GetType().Assembly.GetManifestResourceStream("yourresourcename.ext");
您可能必须用路径装饰资源名称,解决此问题的简单方法是调用
string[] resourcenames = this.GetType().Assembly.GetManifestResourceNames();
您可以更花哨并创建多个 .resx 文件,这些文件通常用于国际化。