none
WinRT 组件中的资源文件读取 RRS feed

  • 问题

  • 我创建了一个winrt组件,在里面添加了一些文件,比如说图片

    并设置类型为:Resouces

    我想知道:使用什么方法能够读取这些文件? 有点类似于.NET中的Assembly.GetManifestResourceStream

    另外,如果一个C#的项目引用了这个Winrt组件,能读取这个这个组件中的这些文件吗?

    谢谢!

    2012年11月5日 13:58

答案

  • Hi,

    抱歉回复的比较迟,这个问题我研究了一下发现。

    在WinRT Component中如果添加一个Resource的文件,比如Embedded Resource的图片进去,是没有办法在其他的工程中得到这个图片的原因在于,WinRT中不支持GetManifestResourceStreaam方法。

    但是在ClassLibrary使用Embedded Resource的话是可以得到这个资源的,可以使用以下代码(这个是读一个Embedded resource的xml):

            var s = Assembly.Load(new AssemblyName("PortableClassLibrary")).GetManifestResourceStream(@"PortableClassLibrary.files.default.xml");
                StreamReader sr = new StreamReader(ts);
                string fileContentPortable = sr.ReadToEnd();
                MessageDialog msgPortable = new MessageDialog("From PortableClassLibrary: " + fileContentPortable);
                await msgPortable.ShowAsync();
    WinRT 组件和 ClassLibrary 中设置比如图片等资源的Build Action为Content的话那么编译出来的话会被单独打包,这个你需要将所有的东西复制到引用资源的工程中才行,之后用ms-appx可以得到,不过这样的话跟你直接将资源添加到工程已经没什么区别了。

    Aaron Xue [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 1096 2012年11月10日 13:42
    2012年11月7日 7:03
    版主

全部回复

  • 卡住了,求助
    2012年11月6日 3:21
  • Hi,

    抱歉回复的比较迟,这个问题我研究了一下发现。

    在WinRT Component中如果添加一个Resource的文件,比如Embedded Resource的图片进去,是没有办法在其他的工程中得到这个图片的原因在于,WinRT中不支持GetManifestResourceStreaam方法。

    但是在ClassLibrary使用Embedded Resource的话是可以得到这个资源的,可以使用以下代码(这个是读一个Embedded resource的xml):

            var s = Assembly.Load(new AssemblyName("PortableClassLibrary")).GetManifestResourceStream(@"PortableClassLibrary.files.default.xml");
                StreamReader sr = new StreamReader(ts);
                string fileContentPortable = sr.ReadToEnd();
                MessageDialog msgPortable = new MessageDialog("From PortableClassLibrary: " + fileContentPortable);
                await msgPortable.ShowAsync();
    WinRT 组件和 ClassLibrary 中设置比如图片等资源的Build Action为Content的话那么编译出来的话会被单独打包,这个你需要将所有的东西复制到引用资源的工程中才行,之后用ms-appx可以得到,不过这样的话跟你直接将资源添加到工程已经没什么区别了。

    Aaron Xue [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 1096 2012年11月10日 13:42
    2012年11月7日 7:03
    版主
  • 首先谢谢,我调研之后也没有找到好的办法

    我的使用方式是C#调用WinRT组件,我希望在WinRT组件中可以做到读取这些Resouces

    目前我把这些Resouces放在C#这一层来读取

    这是一个有用的东东,比如制作基于WinRT的SDK,希望以后可以支持。


    • 已编辑 1096 2012年11月10日 13:42
    2012年11月10日 13:41