获取当前文件的路径

时间:2019-07-04 16:01:46

标签: c#

我找到的用于获取当前文件路径的所有解决方案在两种情况下均无效:在该解决方案中的另一个项目中运行单元测试时,以及在通过引用从另一个项目中访问该项目时。

运行单元测试时,这些单元生成的路径都与我的解决方案中的Test项目相关,这会导致我正在构建的访问某些资产的路径不正确:

# Use PHP 5.3
AddHandler application/x-httpd-php53 .php

在运行单元测试时,它们都输出错误的项目: C:\ Users \ Me \ source \ MySolution \ TestProject \ bin \ Debug

我需要它为正确的项目输出相同的路径:
C:\ Users \ Me \ source \ MySolution \ CoolProject \ classes \ somefile.cs 要么 C:\ Users \ Me \ source \ MySolution \ CoolProject \ classes 要么 C:\ Users \ Me \ source \ MySolution \ CoolProject \ 要么 C:\ Users \ Me \ source \ MySolution \ CoolProject \ bin \ debug

如何生成当前文件或至少代码所在的项目的路径?

1 个答案:

答案 0 :(得分:5)

*。cs在编译期间丢失。您可以通过以下方法来保留它:具有一个带有一些默认参数的方法,该方法使用[CallerMemberName],文件名使用[CallerFilePath],调用方法的行使用[CallerLineNumber],然后返回一个收到的值。

public string GetMyFilePath([CallerFilePath] string callerFilePath = null) => return callerFilePath;

不带任何参数调用它,它将返回您正在从中调用的文件的路径。...只要在生成代码的同一台计算机上,就可以

您还可以从Assembly.GetExecutingAssembly().CodeBase获取dll路径。这将为您提供指向前面带有file:///的dll的完整路径,而不是源文件名。

详细说明您的目标会很好,可能会有另一种更好的方式来完成您要尝试的工作。