我正在尝试从可运动的类库(从WP8应用程序引用)加载BitmapImages。我需要首先检查资源是否是程序集的一部分,如果没有,则回退到从应用程序目录加载它们。如果图像位于同一个程序集中,则可以正常工作,但当它们位于可移植类库中时则不行。
这是我用来获取便携式类库中所有资源名称的代码:
public static IEnumerable<object> GetResourcePaths(Assembly assembly) {
var culture = System.Threading.Thread.CurrentThread.CurrentCulture;
var mrn = assembly.GetManifestResourceNames();
// mrn contains all of my image resources
foreach (var resource in mrn) {
var rm = new ResourceManager(resource.Replace(".resources", ""), assembly);
//When I call either of the next two lines, I get a 'System.Resources.MissingManifestResourceException'
var NOT_USED = rm.GetStream("app.xaml"); // without getting a stream, next statement doesn't work - bug?
var rs = rm.GetResourceSet(Thread.CurrentThread.CurrentUICulture, false, true);
var enumerator = rs.GetEnumerator();
while (enumerator.MoveNext()){
yield return enumerator.Key.ToString();
}
}
}
答案 0 :(得分:2)
查看有关如何从PCL访问资源的文章: http://www.irisclasson.com/2012/11/01/example-windows-store-app-portable-class-library-how-to-access-and-use-pcl-resources/
但请注意,本文是关于从PCL阅读文本内容,而不是图像。我没有设法从另一个程序集加载存储为PCL中的嵌入资源的位图。它也不鼓励在PCL中存储像bitmaps这样的平台特定内容,因为你处理甚至加载它们的方式非常特定于平台。