C# 从程序集获取文件

C# 从程序集获取文件,c#,C#,我想从以下结构中读取文件路径 结构类似于:AssemblyName->MyFiles(Folder)->Text.txt 这里我想得到Text.txt的路径。请帮助你能做什么 string assemblyPath = Assembly.GetExecutingAssembly().Location; string assemblyDirectory = Path.GetDirectoryName(assemblyPath); string textPath = Path.Combine(ass

我想从以下结构中读取文件路径

结构类似于:AssemblyName->MyFiles(Folder)->Text.txt

这里我想得到Text.txt的路径。请帮助

你能做什么

string assemblyPath = Assembly.GetExecutingAssembly().Location;
string assemblyDirectory = Path.GetDirectoryName(assemblyPath);
string textPath = Path.Combine(assemblyDirectory, "MyFiles", "Test.txt");
string text = File.ReadAllText(textPath);
…只是把它分成几部分…但是你可以把它写在一行,不用说

或者,如果您的Environment.CurrentDirectory已设置为执行程序集位置的目录,则只需执行以下操作

File.ReadAllText(Path.Combine("MyFiles", "Text.txt"));

Jeff已经介绍了如何获得路径,您对他的回答的评论是您想要打开的文件实际上包含在您的项目输出中吗

在相关文件的属性窗格下,查看
复制到输出目录
选项-它通常默认为
不复制
。如果要在编译程序的输出目录中包含文件,则需要将其设置为
Copy Always
Copy if Newer


一般来说,您应该始终将任何IO包装在适当的try-catch块中,或者使用静态
File.Exists(path)
方法检查文件是否存在

我认为您要查找的是嵌入程序集中的文件。退房第一个答案解释了如何设置嵌入式文件,以及如何从代码中获取它。

我遇到了一个例外,“找不到路径'c:\users\taks\documents\visual studio 2010\Projects\Console Applications\GetFilesFromAssembly\GetFilesFromAssembly\bin\Debug\MyFiles\Test.txt'的一部分,我想他有一个嵌入式文件,与程序集不在同一目录中的文件。如果该文件位于库文件夹而不是执行程序集文件夹中,则此操作将不起作用。除了嵌入式资源方法外,我还没有找到一种适用于库子文件夹的方法。问题是我无法将此文件复制到输出目录,我必须从提到的层次结构访问此文件。感谢Eric的建议,它正在工作,我已将作为resource@user1238374,什么是“提到的层次结构”?您的第一个级别是“AssemblyName->”,每个人都有不同的理解(程序集中嵌入的资源、相对于程序集的路径,甚至可能是GAC中相对于程序集的路径),请澄清您的意思(以及您实际想要实现的目标)。@AlexeiLevenkov:assembly包含文件夹名“MyFiles”它又包含一个文件名“Text.txt”。现在这个程序集将被另一个程序集引用,我必须在其中读取“Text.txt”文件的内容。