我在想如何在 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
而不等待返回的代码?
谢谢大家。
我能够重现您的情况:
这就是我用来避免这种情况的方法:
<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 就无法再阻止我了。
输出将生成两个文件。