为什么 oscdimg.exe, Under Visual Studio, 不被识别为内部或外部命令、可运行程序或批处理文件

Why is oscdimg.exe, Under Visual Studio, not recognized as an internal or external command, operable program or batch file

在 Visual Studio(2015 年和 2017 年)我有一个批处理文件,我在 AfterBuild 上 运行。

  <Target Name="AfterBuild">  
    <Exec Command="&quot;$(ProjectDir)\test.bat&quot;" WorkingDirectory="$(ProjectDir)" />
  </Target>

在批处理文件里面是很简单的一行

"%SYSTEMROOT%\System32\oscdimg.exe" -n -m "%~dp0.\bin" -l"testdisk" "%~dp0\test.iso"

当我 运行 批处理文件本身(简单地双击 bat 文件)时,它会按需运行。

但是,当 Visual Studio 进入 AfterBuild 时,出现以下错误。

'"C:\WINDOWS\System32\oscdimg.exe"' is not recognized as an internal or external command, operable program or batch file.

有人知道为什么会这样吗? visual studio AfterBuild 有限制吗?即使我在 oscdimg.exe 周围使用额外的双引号(因为没有空格)错误也不会消失。

如有任何帮助,我们将不胜感激。

谢谢

感谢 我能够找到这个问题的原因。 让我引用他的话

VS may be a 32 bit app. Consequently "C:\WINDOWS\System32" is getting redirected to "C:\Windows\SysWOW64" and oscdimg.exe probably is not there. Try using this: "C:\Windows\Sysnative\oscdimg.exe" See www.samlogic.net/articles/sysnative-folder-64-bit-windows.htm – RGuggisberg

所以我决定 运行 来自 VS AfterBuild 的命令提示符的 64 位版本。

  <Target Name="AfterBuild"> 
    <Exec Command="%windir%\sysnative\cmd.exe /c &quot;$(ProjectDir)\test.bat&quot;" WorkingDirectory="$(ProjectDir)" />
  </Target>

我这样做是为了避免更改可能 运行ning 本身的批处理文件(意味着 运行ning 来自 64 位资源管理器)