You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF程序集资源URI配置问题:PixelShader路径错误排查

WPF PixelShader URI配置问题分析

让我帮你拆解下这段代码里的URI问题:

你的URI配置存在两个核心问题,导致资源可能无法正确加载:

  • URI格式与指定的UriKind.Relative不兼容:你写的/Shazzam.Shaders;component/Effects/PivotEffect.ps是WPF中绝对组件资源URI的格式(包含程序集标识;component),但你却设置了UriKind.Relative。相对URI的规则是不允许包含程序集名称和;component标记的,这会让WPF的资源解析器搞混路径逻辑。

  • 相对路径冗余了程序集前缀:当使用相对URI时,路径应该直接从当前程序集的资源根目录开始。你的PivotEffect.ps放在Effects文件夹下,且已设置Build Action为Resource,所以相对路径只需要写Effects/PivotEffect.ps就足够了,不需要额外加程序集相关的前缀。

修复后的两种可选代码

选项1:使用相对URI(更简洁,推荐)

Dim pixelShader As PixelShader = New PixelShader()
pixelShader.UriSource = New Uri("Effects/PivotEffect.ps", UriKind.Relative)

选项2:使用绝对组件URI(适合跨程序集引用场景)

如果你需要明确指定程序集(比如从其他项目引用资源),就要用完整的绝对URI格式,并把UriKind设为Absolute:

Dim pixelShader As PixelShader = New PixelShader()
pixelShader.UriSource = New Uri("pack://application:,,,/Shazzam.Shaders;component/Effects/PivotEffect.ps", UriKind.Absolute)

最后提醒下:要确认你的项目编译后的程序集名称确实是Shazzam.Shaders(可以在项目属性的「应用程序」标签里查看),如果程序集名称和命名空间不一样,记得把URI里的Shazzam.Shaders替换成实际的程序集名称哦。

内容的提问来源于stack exchange,提问作者Saif Hef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:19:32