在代码中获取 ProjectPath 或 SolutionPath

Getting the ProjectPath or SolutionPath in code

我需要知道是否有某种预处理器指令,或者可能只是一个技巧,可以让我将编译应用程序的解决方案文件夹嵌入到应用程序本身中。

我们有一个系统需要检查本地计算机上的文件,如果它们不存在,则从远程服务器或云服务中获取它们。出于可移植性原因,必须将其抽象化。我们有确保远程获取和存储逻辑正常工作的单元测试,但在我们推送到服务器之前,我需要确保人们在本地进行端到端测试,所以我想要一个虚拟的远程文件提供程序这只是检查本地计算机上的不同文件夹。我不想假定一个特定的路径(如 C:\dummy_files),也不能假定这些文件将相对于编译程序集的实际执行路径(因此类似于 Directory.GetCurrentDirectory( ) 不会起作用)。

如果我知道正在执行的应用程序是从哪里编译的,那么这些文件应该与源代码一起相对于解决方案目录。显然,我将放置预处理器指令以仅允许此代码在调试中 运行。

如果您只需要一个执行路径,您可以使用:

Environment.CurrentDirectory

请试试这个

string wanted_path = Path.GetDirectoryName(Path.GetDirectoryName(System.IO.Directory.GetCurrentDirectory()));

尝试以下

Server.MapPath

Request.MapPath

考虑将 $(ProjectPath) 写入文本文件的预构建脚本(项目 -> 属性 -> 构建事件 -> 预构建事件命令行)。然后,您可以将此文本文件作为嵌入式资源包含在内,并使用反射 API 从中读取。