【问题标题】:Access project files from class in separate folder从单独文件夹中的类访问项目文件
【发布时间】:2010-12-10 02:42:07
【问题描述】:

以下屏幕截图来自解决方案资源管理器窗格:


我在文件夹 DataAccess 中有一个类,它需要访问文件夹 data 中的资源。我收到以下错误消息。

System.IO.IOException: Cannot locate resource 'data/danio_rerio.xml'.

在以下情况下不起作用:

在以下情况下有效:

文件夹 data 是文件夹 DataAccess 中的子文件夹。我是否可以使用以下语法:

foldername/somefile.someextension

访问项目中位于不同文件夹中的资源?


编辑:我不想将位置硬编码到我的目录中。

【问题讨论】:

  • 这些文件的“部署”设置是什么。通常,资源在编译时捆绑到您的程序集中,然后通过ResourceStream 而不是FileStream 访问。

标签: c# .net visual-studio visual-studio-2010


【解决方案1】:

当您运行应用程序时,运行目录将成为您的“活动目录”

假设你有

c:\myproject\bin\debug\myapp.exe

当您运行应用程序时,您会尝试搜索

c:\myproject\bin\debug\foldername\somefile.someextension

你真正想要的可能接近

c:\myproject\data\daniorenio.xml

所以你要搜索以下目录

c:\myproject\bin\debug\..\..\data\daniorenio.xml

.. 运算符告诉您要返回目录层次结构

但是,这是假设您的二进制文件将位于比您的资源更低的分支中。我实际上所做的是将运行时绝对需要的所有内容复制到一个特殊目录中,例如

c:\myproject\RuntimeRequired

这样我可以发出这样的构建后事件(在项目/属性/构建事件/构建后)

复制 /Y "$(ProjectDir)RuntimeRequired*" "$(OutDir)"

【讨论】:

    【解决方案2】:

    我自己找到了答案。在提供赏金之前应该进行更多搜索-_-

    Pack URIs in WPF[Source]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      相关资源
      最近更新 更多