关于c#:从程序集获取文件


Get File From an Assembly

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

结构就像:AssemblyName-> MyFiles(Folder)-> Text.txt

在这里,我想获取Text.txt的路径。 请帮忙


我认为您正在寻找的是程序集中嵌入的文件。看看这个问题。第一个答案说明了如何设置嵌入式文件,以及如何从代码中获取它。


你可以做

1
2
3
4
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已经设置为执行程序集位置的目录,则可以执行

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


Jeff涵盖了您的获取途径,您对他的回答的评论是您要打开的文件实际上包含在项目输出中吗?

在相关文件的属性窗格下,查看Copy to Output Directory选项-通常默认为Do not copy。如果要在编译程序的输出目录中包含文件,则将其设置为Copy AlwaysCopy if Newer

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