在.NET Core / Standard中将java.exe作为预构建步骤运行失败,并显示9009

时间:2019-01-15 16:02:02

标签: c# build .net-core .net-standard

我试图在C#-。NET Standard 2.0项目中作为预构建步骤运行java.exe。 csproj文件包含以下代码段:

<Target Name="Java" BeforeTargets="Build">
    <Exec Command="c:\Windows\System32\java.exe"/>
</Target>

(我简化了测试的命令行。)文件java.exe存在于c:\ windows \ system32中,但是构建失败,错误代码为9009:

c:\Windows\System32\java.exe' is not recognized as an internal or external command,
1>operable program or batch file.
1>C:\workspace\Test.csproj(21,5): error MSB3073: The command "c:\Windows\System32\java.exe" exited with code 9009.
1>Done building project "Test.csproj" -- FAILED.

直接从命令行运行java.exe可以正常工作。

1 个答案:

答案 0 :(得分:0)

显然,由于Visual Studio是32位应用程序,因此c:\ windows \ system32路由到了另一个路径。使用特殊的别名“ Sysnative”有效:

<Target Name="Java" BeforeTargets="Build">
    <Exec Command="c:\Windows\Sysnative\java.exe"/>
</Target>

更多信息here