リソースに有効な相対パスがわかりません。私は考えられるすべてを試しました。動作する唯一のものは、私のシステムでのみ正しいが、デプロイされたバージョンでは正しくない絶対パスです。
私の知る限り、この非常に単純なパスが機能するはずです。
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を使用する、2番目のパラメーターを完全に除外するなどのすべての組み合わせで、上記のすべてを試しました。絶対的な道以外に何も機能せず、私は頭がおかしくなっています。
これがソリューションの構造です。メインプロジェクトはMUSUIで、下部は太字で示されています。この効果クラスと.psファイルは両方とも、参照されるアセンブリFSR.WPF.Utilities.UIのルートにあるEffectsフォルダーにあります。
とにかく、私はこれがどういうわけか機能しなければならないことを知っています。特にアセンブリ名にハードコーディングする必要がない場合は、可能な限り最短の相対パスを把握できる人なら誰でも賞品を獲得できます。