내 리소스에서 작동하는 상대 경로를 알아낼 수 없습니다. 나는 내가 생각할 수있는 모든 것을 시도했다. 작동하는 유일한 방법은 내 시스템에서만 올바른 절대 경로이지만 전개 된 버전에서는 올바르지 않습니다.상대 소스가 작동하지 않습니다.
내가 아는 한,이 아주 간단한 경로가 작동해야합니다. 내가 오류 The type initializer for 'FSR.WPF.Utilities.UI. GreyscaleEffect' threw an exception.
내부 예외 얻을 수있는
public class GreyscaleEffect : ShaderEffect
{
private static PixelShader _pixelShader = new PixelShader()
{ UriSource = new Uri("/Effects/Greyscale.ps", UriKind.Relative) };
:
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 파일), 다음 경로 : Cannot locate resource 'effects/greyscale.ps'.
은 또한 다음을 시도했습니다 사용되며 정상적으로 작동합니다.
<Image Source="/FSR.WPF.Utilities.UI;component/assets/CurrencyFlags/USD.png"
왜 이와 비슷한이 사건이 효과가 없는지 알아봐라.
만 다음과 같은 절대 경로가 작동 : 나는 또한, 문자열의 앞에 @
을 사용 UriKind.Absolute을 사용하고 두 번째 매개 변수를 떠나 모든 조합으로 위의 모든 시도했습니다
Uri("C:\TFS\MUS 6.1.x\Mosaic Middleware\FSR.WPF.Utilities\FSR.WPF.Utilities.UI" +
"\Effects\Greyscale.ps")
전부. 아무것도 작동하지 않지만 절대 경로와 나는 내 마음을 잃고있어.
다음은 솔루션 구조입니다. 메인 프로젝트는 굵은 글씨의 맨 아래에있는 MUSUI입니다. 이 효과 클래스와 .ps 파일은 모두 참조 된 어셈블리 FSR.WPF.Utilities.UI의 루트에있는 Effects 폴더에 있습니다.
어쨌든,이 어떻게 든 일을하는 것을 알고있다. 가능한 가장 짧은 상대 경로를 알아낼 수있는 사람은 누구나, 특히 어셈블리 이름에 하드 코딩을 요구하지 않으면 상금을 얻습니다.
마인드가 날아갔습니다. 이 경로를 사용하여 고정했습니다. 이제이 유틸리티 라이브러리의 어셈블리 이름이 변경된 경우 GreyscaleEffect.cs 및 Greyscale.ps가 항상이 클래스에 속할 것이므로 '현재 클래스가 속한 어셈블리'를 사용하는 경로를 포맷하는 방법이 있습니까? 같은 장소? – Alain
@Alain, 네, 어셈블리를 사용할 수 있습니다.GetExecutingAssembly()'현재 어셈블리를 얻으려면 –
오, Intellisense가 그리워하는 방식을 좋아합니다. 전혀 감지하지 못합니다.이 함정에 빠진 모든 사람 (행운에 따라 다름)이 다시 확인하고 이 솔루션에 도달 할 때까지 시행 착오를 피하십시오. 타이 타이! 이것은 스파르타입니다! 마이크로가 아니야 – EpiGen