如何在仍使用系统虚拟文件夹的同时,从Visual Studio的Exec中避免错误代码为-1的MSB3073

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

这是我之前问过的question的后续内容。简而言之,我运行Visual Studio(32位应用程序)的64位版本的cmd。我这样做是因为我需要运行oscdimg.exe命令,该命令只能从64位版本的cmd进行访问。

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

现在虽然可以正常工作,但我收到以下错误。

错误MSB3073:命令“%windir%\ sysnative \ cmd.exe / c” C:\ XXXX \ XXX \ XXX \ test.bat UPLOAD“”以代码-1退出。

虽然此错误不会破坏我的工作,这意味着该批处理程序成功执行了任务,但仍很高兴修复此错误消息,因为我们团队中的其他人对此错误消息提出了疑问。

我假设触发了此错误,因为尽管Visual Studio是32位应用程序,但是build或exec调用可能是64位应用程序的Windows操作系统应用程序。而且64位应用程序看不到sysnative virtual folder.

有什么方法可以解决此错误?

编辑:在命令中添加了参数以模拟实际使用并显示我添加&quot;的原因。

visual-studio build msbuild visual-studio-2017 exec
1个回答
0
投票

最近让我感到惊讶的是robocopy returns 1 when it finishes the copy successfully,作者@Valamas以斜体显示

当没有文件被复制时将引起混乱= VS中没有错误。然后,当发生更改时,文件确实会被复制,VS错误,但是开发人员想要的一切都完成了。

当robocopy是批处理文件中的最后一条命令时,

VS会选择并将此返回值解释为错误。

在自动复制的情况下,VS返回1而不是-1,因此它与我当前的情况略有不同。但是,由于我的批处理文件可以按预期运行,所以我很安全地在批处理完成而没有错误的情况下返回0。

exit 0

而且我不再看到MSB3073。

对于此帖子的问题,由于oscdimg是批处理文件中的最后一条命令,因此我假设oscdimg成功后返回非零值。

我找不到有关oscdimg的支持文档。

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