【问题标题】:Access Resources from published application从已发布的应用程序访问资源
【发布时间】:2013-07-25 19:53:33
【问题描述】:

我在 Resources 文件夹中嵌入了一些 .txt 文件。我运行项目时,根据选择,确定.txt文件名。

例如;

文件名为 sample017.txt,我保留了 textName 字符串变量。该文件的完整路径是:

"../../Resources\" + textName;

我将所有这些分配给 fileName 字符串变量:

fileName = "../../Resources\\" + textName;

所以,我将这个字符串变量用于流式传输文本文件:

using (Stream input = File.OpenRead(fileName))

在这种形式下,我可以访问 sample017.txt 文件,它在调试模式下工作正常。但是,当我构建一个安装项目并将其安装在任何 PC 上时,它崩溃到一个异常并且找不到“资源”文件夹。如何使用 .exe 文件夹中的资源进行管理?

注意:我不想将文件复制到程序文件夹。我想嵌入这些来源。

【问题讨论】:

  • 在设置中添加资源文件夹
  • 您是否检查过资源文件夹是否确实存在于目标机器上?您是否已将其配置为与项目一起部署?
  • @GrantThomas 我不想将 Resources 文件夹替换为已安装的目录文件夹。我想嵌入文件..
  • @EhsanUllah 如何将资源文件夹添加到设置中?
  • @team16sah 我认为您无法将文本文件添加为嵌入式资源。

标签: c# resources embed


【解决方案1】:

尝试从路径中删除../..,因为资源部署后与本地调试时不同。

也检查这个线程:

Deployed application can't find its resources c# Visual Studio 2010

您还可以将文件作为资源嵌入并使用 Assembly.GetExecutingAssembly 加载它。使用 GetManifestResourceStream 获取内容。

有关访问您在此处找到的资源的更多详细信息:http://support.microsoft.com/kb/319292

这是一个截图..

var assembly = Assembly.GetExecutingAssembly();
var res = assembly.GetManifestResourceStream("MyNameSpace.TextFile.txt");
var textStreamReader = new StreamReader(res);

问候

【讨论】:

  • 您好,请给我一个包含详细信息的代码 sn-p 吗?谢谢。
  • 嗨,当然,我添加了一个链接和一个片段。 hth.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-19
  • 2011-07-25
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多