C# 如何在MS代理上的Azure管道上运行的代码上查找目录

C# 如何在MS代理上的Azure管道上运行的代码上查找目录,c#,azure-pipelines,azure-pipelines-tasks,C#,Azure Pipelines,Azure Pipelines Tasks,我有一个Visual Studio c#项目,其结构如下: SolutionFolder |-Folder1 |- Project1 |- TestProject1 |-Folder2 |- Project2 |- TestProject2 |-TaskFolder |-file ...etc 其中一个管道任务在SolutionFolder下创建一个文件夹,并在其中写入一个文件。(即任务文件夹/文件) 当Testproj

我有一个Visual Studio c#项目,其结构如下:

SolutionFolder
  |-Folder1
      |- Project1
      |- TestProject1
  |-Folder2
      |- Project2
      |- TestProject2
  |-TaskFolder
      |-file
 ...etc
其中一个管道任务在SolutionFolder下创建一个文件夹,并在其中写入一个文件。(即任务文件夹/文件)

当Testprojects运行时,我想读取这个文件。 我在代码中调用GetCurrentDirectory,并在我的机器中返回TestProject文件夹的父文件夹。i、 e(Folder1)然后我可以转到父文件夹(即SolutionFolder)和相关文件。 任务文件夹/文件

但是,当它在管道中运行时,GetCurrentDirectory返回a/1,并且父级为a。因此,我必须添加1/s/SolutionFolder/TaskFolder/File才能访问该文件

是否有一种方法可以获取适用于MsAgent和本地计算机的文件夹起点。 i、 e(获取解决方案文件夹),然后/TaskFolder/File。因此,在这些环境下运行时,代码是相同的

注意:在本地运行时,文件应手动放置在/TaskFolder/File中,因为这主要用于调试


提前感谢。

我会检查环境变量
BUILD\u SOURCEDIRECTORY
,如果
null
您在本地场景中,请调用
GetCurrentDirectory
,如果不使用concat SolutionFolder/TaskFolder/File作为解决方法,您可以编写两个相同的测试方法,包括读取文件。在testmethodA中硬编码本地路径,并在testmethodB中使用管道路径。然后根据测试过滤器指定要运行的测试。关于测试过滤器,你可以参考这个。谢谢你的回复,你的想法有两个路径,并选择它根据朱利奥维安下面是好的。我会试试的。谢谢,这值得一试。``string variable=“BUILD.SOURCESDIRECTORY”//Build.SourcesDirectory var Envvalue=System.Environment.GetEnvironmentVariable(variable,EnvironmentVariableTarget.Machine);`在使用Environment.VariableTarget参数和不使用Environment.VariableTarget参数的情况下尝试此操作,在管道上运行时,我得到Null或空。有什么想法吗?小心点。(点)vs(下划线)BUILD(下划线)SOURCESDIRECTORY=>Environment var BUILD.SOURCESDIRECTORY=>pipeline var在使用C#代码的情况下,选择(下划线)版本