C# 如何从Visual Studio测试任务中设置Azure DevOps变量,以便以下内嵌PowerShell脚本可以读取它?

C# 如何从Visual Studio测试任务中设置Azure DevOps变量,以便以下内嵌PowerShell脚本可以读取它?,c#,powershell,azure-devops,C#,Powershell,Azure Devops,我试图在VisualStudio测试任务期间在发布管道中设置Azure DevOps变量。在VisualStudioC#测试代码中,我想根据测试是否通过设置ADO发布变量。然后,我将在下面的发布任务中读入这个变量,即内联Powershell脚本,以执行单独的任务 我尝试在我的C#Visual Studio测试代码中使用控制台.WriteLine(“#vso[task.setvariable=;]”),但它没有设置变量。但是,当我使用内嵌Powershell脚本使用Write Host“##vso

我试图在VisualStudio测试任务期间在发布管道中设置Azure DevOps变量。在VisualStudioC#测试代码中,我想根据测试是否通过设置ADO发布变量。然后,我将在下面的发布任务中读入这个变量,即内联Powershell脚本,以执行单独的任务

我尝试在我的C#Visual Studio测试代码中使用
控制台.WriteLine(“#vso[task.setvariable=;]”)
,但它没有设置变量。但是,当我使用内嵌Powershell脚本使用
Write Host“##vso[task.setvariable=;]”设置变量时,
它工作正常

是否可以在Visual Studio测试任务中使用C#设置ADO发布变量?或者只能使用批处理/Powershell/Shell脚本/任务设置变量?如果是这样的话,有人对如何做到这一点有什么建议吗

如何从Visual Studio测试任务中设置Azure DevOps变量,以便以下内嵌PowerShell脚本可以读取它

事实上,正如jessehouwing所说:

因此,我们需要使用调用日志命令

要解决此问题,可以尝试以下方法:

添加两个内嵌powershell任务,以根据以前任务(包括VS测试任务)的结果设置ADO发布变量:

然后,添加另一个powershell任务,以便在成功执行之前的所有任务(包括VS测试任务)的结果时,基于ADO发布变量设置


希望这有帮助。

vstest将控制台输出重定向到trx文件。这会导致语句无法到达代理日志流。代理更新变量需要最后一部分。@Jessehowing是否可以强制语句到达代理日志而不重定向到TRX文件?如果没有,是否有其他方法从VS测试任务中设置ADO变量?是否有此问题的更新?你解决这个问题了吗?如果没有,请告诉我有关此问题的最新信息好吗?我最终使用了非Azure ADO方法来解决我的问题,因为日志记录命令不适用于VSTest任务。谢谢你的帮助。谢谢你的帮助!这是一个好主意,但我不确定它是否适合我的情况。我的
VSTest
任务运行多个测试(称之为
TestA
TestB
TestC
)。我的
powershell脚本
有一些函数(
FuncA
FuncB
FuncC
),如果它们在
VSTest
任务中的相应测试通过,则应该运行这些函数(如果
TestA
TestC
通过但
TestB
失败,则只运行
FuncA
FuncC
运行,而不运行
FuncB
)。在您的建议中,powershell脚本的运行基于是否有任何VSTest测试通过或失败。我需要一种更详细的方法,因此理想情况下可以从测试中设置变量themselves@aboublemc,您说过“如果TestA和TestC通过,但TestB失败,则只有FuncA和FuncC运行,而不是FuncB”,如果您只有这个指定情况,或者这只是您的情况之一,您最终想要根据不同的测试结果执行相应的Func任务?如果您只有这个指定情况,我们仍然可以使用about方法,只需将task
TestA
TestC
放在一起。
vstest redirects the console output to the trx file.