C#console app:没有..\..\filename的引用文件

MVi*_*Vin 3 .net c# console filepath

我需要从ac#console应用程序中的文件中读取数据.
什么有效: new StreamReader(@"..\\..\myData.csv");

问题:..\\..\工作,因为我的exe文件位于bin/Debug目录中当我部署项目时,路径不再起作用

问题:无论exe文件的位置如何,我如何引用myData.csv?

我曾希望找到一个返回我的控制台应用程序的"根"的方法到目前为止,我尝试了以下方法:

Process.GetCurrentProcess().MainModule.FileName
Path.GetDirectoryName(Assembly.GetEntryAssembly().Location
Path.GetFullPath("bp.csv")
AppDomain.CurrentDomain.BaseDirectory
Directory.GetCurrentDirectory()

所有这些表达式都将我引导到exe文件的目录而不是根目录.

我刚刚开始阅读有关隔离存储的信息,但有一些更简单的东西会很高兴.有什么建议/建议吗?

kod*_*use 5

最简单的选择可能是将CSV文件添加到解决方案中并在VS中右键单击它并将构建操作设置为"Copy if newer",它将与.exe(发送到Debug或Release文件夹)一起输出.你建立.

在代码中,您可以像这样获取正在执行的程序集的当前位置:

string folder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
Run Code Online (Sandbox Code Playgroud)

然后,您可以将路径与CSV文件名组合:

string filePath = Path.Combine(folder, "myData.csv");
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的方法,但`Assembly.GetExecutingAssembly()`实际上将返回包含当前方法的程序集,该程序集可能是DLL而不是EXE,它可能位于单独的文件夹中.`GetEntryAssembly()`将返回EXE程序集. (2认同)