我试图在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可以正常工作。
答案 0 :(得分:0)
显然,由于Visual Studio是32位应用程序,因此c:\ windows \ system32路由到了另一个路径。使用特殊的别名“ Sysnative”有效:
<Target Name="Java" BeforeTargets="Build">
<Exec Command="c:\Windows\Sysnative\java.exe"/>
</Target>
更多信息here。