在目标xml对象(csproj文件)上同时运行进程

问题描述 投票:0回答:1

我在想如何在 dotnet 自定义命令中运行多个进程(设置依赖项以实现最终结果)。

我很快找到了可以在

target
文件中设置的
.csproj
xml 对象。

这就是我尝试过的:

<Target Name="fuzz" BeforeTargets="Run">
    <Exec Command="docker run --name dumpsql -v C:\path\to\postgres1.sql:/docker-entrypoint-initdb.d/postgres1.sql --env POSTGRES_DB=postgres --env POSTGRES_PASSWORD=postdocker -p 5432:5432 -d postgres:latest"/>
    <Exec Command="dotnet run"/>
    <Exec Command="docker run --name fuzzcontainer schemathesis/schemathesis:stable run --cassette-path /app/cassete.yaml --checks all http://host.docker.internal:5169/swagger/v1/swagger.json"/>
</Target>

然后我就可以跑了

dotnet msbuild /t:fuzz

问题:

  • 停在第二个
    Exec
    ,可能是因为 dotnet 程序仍在运行,并且没有返回任何代码。

那么我如何强制构建继续进行下一个

Exec
而不等待返回的代码?

谢谢大家。

c# .net visual-studio msbuild csproj
1个回答
0
投票

我能够重现您的情况:

这就是我用来避免这种情况的方法:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <Target Name="fuzz" BeforeTargets="Build">
    <Exec Command="echo xxx"/>
    <!--<Exec Command="dotnet run"/>-->
    <Exec Command="dotnet run > output.log 2> error.log"/>
    <Exec Command="echo yyy"/>
  </Target>

</Project>

关键是:

dotnet run > output.log 2> error.log

这样我就可以继续我的步骤了,dotnet run 就无法再阻止我了。

输出将生成两个文件。

© www.soinside.com 2019 - 2024. All rights reserved.