c# - 在 .Net 中使用相对文件路径

标签 c# .net resources uri

我有一个 C# 项目,其中包含一些我需要使用 Uri 类引用的资源。对于这个特定的问题,我在项目根目录的“Shaders”文件夹中放置了一些着色器,但我之前遇到过这个问题,其他文件如图像等。到目前为止,我使用了简单的解决方案,给出了一个固定的绝对路径,并确保该文件存在于该位置。不用说 - 这不是一个好的解决方案,从长远来看它不会奏效......

那么,我如何使用相对路径来引用我的资源呢?我想我的问题是双重的:

  • 首先;我不想引用从我的调试文件夹到项目文件夹的相对路径。我希望将文件复制到构建文件夹。着色器包含在项目中,但显然这还不够。构建时如何告诉项目复制文件?或者;解决这个问题的常用方法是什么?

  • 第二;当我将“Shaders”文件夹复制到我的构建文件夹时 - 我使用什么 Uri 语法来引用例如“myShader.ps”放在这个文件夹里?我可以简单地说 file:///Shaders/myShader.ps 吗?

最佳答案

要从您的应用程序目录中获取 Uri,请执行以下操作:

Uri baseUri = new Uri(System.Reflection.Assembly.GetEntryAssembly().Location);
Uri shader = new Uri(baseUri, "shaders/test.ps");

关于c# - 在 .Net 中使用相对文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1759106/

相关文章:

c# - 在本地测试 Facebook 评论插件

c# - 如何取消方法的执行?

c# - Nustache View 引擎 ArrayTypeMismatchException

c# - 从资源加载 XML

iPhone SDK - 在资源中添加压缩内容,然后解压缩到 Documents 文件夹中

WPF - 为每个带有样式的 TreeViewItem 根节点设置不同的 ToggleButton 图像

c# - 从类库中引用 System.Windows.Forms

c# - datagridview 组合框列更改绑定(bind)列表数据 --> 自动显示

c# - EntityFramework 多个 Where

c# - .NET 如何定义流程体系结构接口(interface)?