c# - 在运行时访问资源

标签 c# silverlight silverlight-4.0

我有一个 XML 文件作为我的 Silverlight 4.0 项目的一部分,我想在运行时访问它。我将文件保存在名为 Resources 的目录中,其中 Build Action 设置为“Content”,Copy to Output Directory 设置为“Do not copy”。如果我解压缩 XAP 文件,我会在我期望的位置看到 XML 文件,但我不确定如何从代码中引用它。我目前有以下内容:

Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(@"/AssemblyName;component/Resources/MyFile.xml")

不幸的是,运行上面的代码后stream为空。除了上面提到的路径,我还尝试了“/Resources/MyFile.xml”、“/MyFile.xml”和“MyFile.xml”,但它们都遇到了相同的行为。

访问作为资源嵌入到 Silverlight 应用程序中的 XML 文件的正确方法是什么?

最佳答案

具有构建操作“Content”的资源只是嵌入到 xap 文件中,具有与应用程序相同的相对目录结构。它不会作为资源嵌入程序集中。

当设置为构建操作“Content”时,您应该能够使用类似(或任何适合您需要的方式)加载文件:

XElement.Load(<relative directory>/<file>)

您当前使用的方法(使用资源流)适用于嵌入式资源(其构建操作设置为“资源”)。对于那些,虽然我还没有尝试过你的方法是否有效,但通常你会使用

获得资源
Application.GetResourceStream

关于c# - 在运行时访问资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5330936/

相关文章:

c# - 重载 Stack.Push?

c# - 使用usings在asp中发送电子邮件

c# - OPC dll - 如何批量检索标签值

c# - 将数据从一个 DataTable 复制到另一个

c# - WCF RIA服务,EntitySet总是空的?

silverlight - Silverlight RichTextBox 中的 XAML 标记大小过大

c# - 使用 AES/Rijndael 在 PHP 中加密,在 C# (WP7/Silverlight) 中解密

silverlight - Silverlight 中的 UpdateSourceTrigger PropertyChanged?

c# - 单击按钮时如何从列表框和 ObservableCollection 中删除自定义项

silverlight-4.0 - 在 Silverlight 中使用属性绑定(bind)更改 DataTemplate