0

我将文本文件添加到我的网络项目中。右键单击并单击属性菜单,我选择构建操作 -> 资源。

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

我试试这个,但我收到流 null

 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();
                }
            }
        }

但它不起作用。

请帮忙

4

2 回答 2

2

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

MyProjectNamespace.MyTextFileName.txt

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

MyProjectNamespace.SubFolderName.MyTextFileName.txt
于 2012-11-06T12:07:15.820 回答
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;
}
于 2012-11-06T12:04:48.480 回答