在asp.net项目中嵌入文本文件

时间:2012-11-06 10:21:44

标签: asp.net resources

我在我的网站项目中添加了文本文件。右键单击并单击属性 我选择的菜单,Build Action - >资源。

如何在我的代码页面中检索文件的内容。

我试试这个,但我收到了流无效

 internal string GetFromResources(string resourceName)
        {
            Assembly assem = this.GetType().Assembly;
            using (Stream stream = assem.GetManifestResourceStream(resourceName))
            {
                using (var reader = new StreamReader(stream))
                {
                    return reader.ReadToEnd();
                }
            }
        }

但它不起作用。

请帮忙

2 个答案:

答案 0 :(得分:2)

尝试将Build Action更改为Embedded Resource,并确保资源名称包含命名空间。即。

MyProjectNamespace.MyTextFileName.txt

如果您的文件位于子文件夹中,请使用:

MyProjectNamespace.SubFolderName.MyTextFileName.txt

答案 1 :(得分:1)

我解决了,下面是我采取的步骤。

首先,我将文本文件定义为嵌入式资源。 第二个问题是我没有在文本文件中添加程序集名称空间。

所以我改变了函数并添加了命名空间

internal string GetFromResources(string resourceName)
{

    Assembly assem = this.GetType().Assembly;
    **List<string> listNameSpaces = assem.GetTypes().Select(t => t.Namespace).Distinct().ToList<string>();**

    foreach (string ns in listNameSpaces)
    {
        **string nsResourceName = ns + "." + resourceName;**
        using (Stream stream = assem.GetManifestResourceStream(nsResourceName))
        {
            if (stream != null)
            {
                using (var reader = new StreamReader(stream))
                {
                    return reader.ReadToEnd();
                }
            }
        }
    }

    return string.Empty;
}