我无法找出适用于我的资源的相对路径。我已经尝试了我能想到的一切。唯一有效的是一个绝对路径,它只在我的系统上是正确的,但在任何部署的版本中都是不正确的。
据我所知,这条非常简单的路径应该可行。
public class GreyscaleEffect : ShaderEffect
{
private static PixelShader _pixelShader = new PixelShader()
{ UriSource = new Uri("/Effects/Greyscale.ps", UriKind.Relative) };
为此我收到错误The type initializer for 'FSR.WPF.Utilities.UI. GreyscaleEffect' threw an exception.
内部异常:Cannot locate resource 'effects/greyscale.ps'.
我还尝试了以下方法:
Uri(";component/Effects/Greyscale.ps", UriKind.Relative)
Uri("/;component/Effects/Greyscale.ps", UriKind.Relative)
Uri("/FSR.WPF.Utilities.UI;component/Effects/Greyscale.ps", UriKind.Relative)
在其他地方(在 MUSUI 中的 xaml 文件中),使用了以下路径,并且工作正常:
<Image Source="/FSR.WPF.Utilities.UI;component/assets/CurrencyFlags/USD.png"
所以我不明白为什么这个如此相似的案例不起作用。
只有以下绝对路径有效:
Uri("C:\TFS\MUS 6.1.x\Mosaic Middleware\FSR.WPF.Utilities\FSR.WPF.Utilities.UI" +
"\Effects\Greyscale.ps")
我还尝试了上述所有方法,@
包括在字符串前面使用、使用 UriKind.Absolute 并完全省略第二个参数。除了绝对路径之外没有任何作用,我正在失去理智。
这是解决方案的结构。主要项目是 MUSUI,底部以粗体显示。此效果类和 .ps 文件都位于 Effects 文件夹中,该文件夹位于引用的程序集 FSR.WPF.Utilities.UI 的根目录中。
无论如何,我知道这必须以某种方式工作。任何能够找出可能的最短工作相对路径的人,特别是如果它不需要在程序集名称中进行硬编码,都会获得奖励。