代码之家  ›  专栏  ›  技术社区  ›  Josh Smeaton

如何从C_vs.2005中的资源文件中检索文本文件

  •  0
  • Josh Smeaton  · 技术社区  · 15 年前

    我有一个HTML模板,我想从VS 2005 C_Windows窗体应用程序的资源文件中检索该模板。

    我在项目中创建了一个名为/html/的文件夹,其中有一个名为template.html的文件。

    我已将文件添加到我的资源中。我把它的名称看作模板,它的文件路径是完全限定的文件名(c:/…/project/html/template.html)。它保存为文本而不是二进制。

    我尝试了很多方法来提取这个文件,但是每次我得到一个空值时都会返回。我错过了什么?

            Type t = GetType();
            Assembly a = Assembly.GetAssembly(t);
            string file = "html.template.html"; // I've tried template and template.html
            string resourceName = String.Concat(t.Namespace, ".", file);
    
            Stream str = a.GetManifestResourceStream(resourceName);
    
            if (str == null) // It fails here - str is always null.
            {
                throw new FileLoadException("Unrecoverable error. Template could not be found");
            }
            StreamReader sr = new StreamReader(str);
            htmlTemplate = sr.ReadToEnd();
    
    3 回复  |  直到 15 年前
        1
  •  1
  •   jerryjvl    15 年前

    你试过进去看看吗 Reflector 在输出程序集中验证资源名称是否实际是您期望的名称?

        2
  •  1
  •   Josh Smeaton    15 年前

    Reflector帮助找出问题所在,谢谢。这就是我需要的:

    string template = Properties.Resources.template;
    

    真的很容易。上面所有的东西都是完全不必要的。

        3
  •  0
  •   Paulo Santos    15 年前

    我相信当你试图检索资源时,你把它命名错了。

    您可以做的一件事是使用 Reflector 并检查资源的全名。