代码之家  ›  专栏  ›  技术社区  ›  Kevin Babcock

如何检索嵌入式xml资源?

  •  5
  • Kevin Babcock  · 技术社区  · 16 年前

    我尝试使用以下代码访问该文件,但始终返回空引用。有人有什么想法吗?

    var path = Server.MapPath("~/bin/MyAssembly.dll");
    var assembly = Assembly.LoadFile(path);
    var stream = assembly.GetManifestResourceStream("MyNamespace.filename.xml");
    
    3 回复  |  直到 16 年前
        1
  •  6
  •   Shawn Miller    16 年前

    我发现在VisualStudio中使用项目属性对话框的“资源”选项卡要容易得多。然后通过以下方式生成对资源的强类型引用:

    Properties.Resources.Filename
    
        2
  •  3
  •   Matt Hamilton    16 年前

    这个 MSDN page for GetManifestResourceStream 请注意:

    (Visual Basic中无任何内容)如果 已访问,但调用方没有 ReflectionPermissionFlag.MemberAccess

    您是否已在程序集中将资源标记为“public”?

        3
  •  0
  •   cjbarth    13 年前

    我发现本文很好地解释了如何设置: http://www.devx.com/dotnet/Article/10831/1954

    • GetEntryAssembly:使用此方法引用为启动当前进程而运行的可执行文件。条目程序集是为Windows窗体应用程序设置的,但对于大多数其他应用程序(例如,web项目),GetEntryAssembly返回“nothing”(或null,在C#中)。
    • GetExecutionGassembly:使用此方法引用执行代码所在的同一程序集。
    • GetCallingAssembly:使用此方法引用包含调用当前方法的代码的程序集。如果您编写泛型代码来读取共享程序集中的嵌入资源(其中嵌入资源位于调用程序集中),则此方法非常有用。