Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取文本文件资源的引用_C#_Resources - Fatal编程技术网

C# 获取文本文件资源的引用

C# 获取文本文件资源的引用,c#,resources,C#,Resources,如果我将新文本文件添加到我的项目regexCheck.txt中,它的默认生成操作是作为资源: 我知道,如果我将选项设置为“复制到输出dicectory=always”,我将能够检索该文本文件的内容,然后我将能够在workingDirectory\Macros\Header\regexCheck.txt 我只是好奇,我将如何能够检索该文本文件的内容,而不必将其输出到工作目录 编辑 例如,relector可以查看我的可执行文件的所有资源: 我知道我可以将文件放在resource.resx中,我

如果我将新文本文件添加到我的项目
regexCheck.txt
中,它的默认生成操作是作为资源:

我知道,如果我将选项设置为“复制到输出dicectory=always”,我将能够检索该文本文件的内容,然后我将能够在
workingDirectory\Macros\Header\regexCheck.txt

我只是好奇,我将如何能够检索该文本文件的内容,而不必将其输出到工作目录


编辑 例如,relector可以查看我的可执行文件的所有资源:

我知道我可以将文件放在
resource.resx
中,我只是想知道如何从exe中提取资源

编辑2 做一些类似于:

        var _assembly = Assembly.GetExecutingAssembly();
        var resourceName = _assembly.GetManifestResourceNames()[0];
        var steam = _assembly.GetManifestResourceStream(resourceName);
        var buffer = new byte[2048];
        steam.Read(buffer, 0, buffer.Length);
        var text = System.Text.ASCIIEncoding.ASCII.GetString(buffer).Replace("\0", "");
我设法查看了文本文件的内容:


我认为您目前无法使用将文件附加到项目的方式

另一种方法是向项目中添加“资源文件”。(项目->添加新项目…->资源文件)。然后可以在资源文件设计器中添加文本文件(添加资源->添加现有文件…)

最终,您将看到一个类似以下内容的项目树:

Project
   |
   +-- Resources
   |      |
   |      +--  regexCheck.txt
   |
   +-- Resource.resx
   |      |
   |      +--  Resource.Designer.cs

在您的代码
资源中。regexCheck
是一个包含文件内容的字符串。

我将构建操作从
资源更改为
嵌入资源

我可以通过以下方式获得内容:

        var fileName = "regexCheck.txt";

        var currentNamespace = typeof(this).Namespace;  // if static class use name of class      
        var fullName = currentNamespace + "." + fileName;

        Func<string,Stream> getResStream =
            x => Assembly.GetExecutingAssembly().GetManifestResourceStream(x);

        using (Stream stream = getResStream(fullName))            
            using (StreamReader reader = new StreamReader(stream))                
                string result = reader.ReadToEnd();  // <------   Result should be the content of text file
var fileName=“regexCheck.txt”;
var currentNamespace=typeof(this).Namespace;//如果是静态类,请使用类的名称
var fullName=currentNamespace+“+”文件名;
Func getResStream=
x=>Assembly.getExecutionGassembly().GetManifestResourceStream(x);
使用(Stream=getResStream(全名))
使用(StreamReader=新StreamReader(stream))
字符串结果=reader.ReadToEnd();//以下是一个示例: