分享

WPF中,如何得到DLL文件中的所有资源?

 yan的图书41 2013-10-24
 

在WPF中,可以这样访问一个图形文件 

Uri uri = new Uri("pack://application:,,/images/" + picturename); 
 
 

我们.Net程序集一般来讲是有嵌入式资源的,通常在Winform中,我们把这些图片,图标,字体文件等编译成嵌入式资源:

而WPF中加入了一种新的编译类型, Resource。WPF的资源就如同你所说的,我们可以通过Pack Uri (http://msdn.microsoft.com/zh-cn/library/aa970069.aspx)来获取,这大大方便我们WPF的程序的开发和资源的整合(XAML源码文件在编译后生成的Baml文件其实也是被存放在WPF Resource中的)

不过,虽然WPF用了新的方式管理资源,但是它还是和嵌入资源一样存放在程序集相同的资源块中。如下图,我在一个WPF程序中加入了一个嵌入资源和资源,他们同时在程序集资源中(通过反射工具可以看到)

不管你是用那种方式来存储资源信息,我们都可以通过反射的代码来读取他们:

      StringBuilder sb = new StringBuilder();
      Assembly assembly = Assembly.GetExecutingAssembly();
      string[] names = assembly.GetManifestResourceNames();
      
      foreach (string name in names)
      {
        //assembly.GetManifestResourceInfo(name).ResourceLocation;
        Stream st = assembly.GetManifestResourceStream(name);
        try
        {
          using (ResourceReader resourceReader = new ResourceReader(st))
          {
            sb.AppendLine(name);
            foreach (DictionaryEntry resourceEntry in resourceReader)
            {
              sb.AppendLine("\t|- " + resourceEntry.Key);
            }
          }
        }
        catch (System.ArgumentException ex)
        {
          sb.AppendLine(name);
        }
      }
      MessageBox.Show(sb.ToString());

 

例子下载:https://skydrive./?cid=51b2fdd068799d15#cid=51B2FDD068799D15&id=51B2FDD068799D15%21888

 
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多