同样的一行代码在同样的汇编中能够通过一个测试夹具但是没法通过另一个。这里是那一行代码:
var dic = new ResourceDictionary { Source = new Uri("pack://application:,,,/MyApp.Wpf;component/ImageResources.xaml") };
在另一个测试装置中出现的错误是System.UriFormatException:Invalid URI:Invalid port specified。
这个URI字符串在XAML中也可以使用。是否有更好的方法在代码中加载资源字典?
谢谢,
Berryl
=== 更新 ===
如我在这篇文章中发现的那样,无效端口是因为未注册pack方案导致的,可以使用以下代码进行注册:
if (!UriParser.IsKnownScheme("pack"))
UriParser.Register(new GenericUriParser(GenericUriParserOptions.GenericAuthority), "pack", -1);
我猜想能够用打包方案加载字典的测试装置之所以没有出错,是因为在那里 SUT 是一个用户控件,并且在创建用户控件实例时会以某种方式加载资源。