在预构建事件中执行批处理文件时出现问题

Joh*_*oon 11 c# visual-studio-2010

我正在尝试在预构建事件期间执行批处理文件.我有一个新项目,并添加了foo.bat.该文件包含以下行:

echo bar
Run Code Online (Sandbox Code Playgroud)

当我将预构建事件命令行设置为foo.bat时,我收到以下错误:

命令"foo.bat"退出代码9009.

当我将pre-build event命令行设置为调用foo.bat时,我收到以下错误:

命令"call foo.bat"退出代码1.

我读过的与这些代码相关的所有内容通常表示批处理文件的内容存在问题(在这种情况下不太可能),或者系统无法找到批处理文件.

批处理文件从命令提示符正常工作.我已经尝试过的事情:使用不同的工具,各种编码创建文件,在文件中放置出口0,对文件进行不同的构建操作,以及将文件复制到输出目录.一切都没有运气.

我错过了什么?它必须是简单的东西.

更新:是的 ,很简单 - 路径的长度太长.请参阅下面的答案了解详情

谢谢!

Hod*_*won 11

我得到了这个工作,我认为一张图片胜过千言万语,所以这里是一个完整的设置在一个屏幕截图.

在此输入图像描述


det*_*zed 5

您有可能foo.bat在的其他地方PATH。尝试指定批处理文件的完整路径,例如C:\Path\to\foo.bat

在构建项目时,当前目录就是该.vcproj文件所在的目录。如果不在目录中,则应相对于该目录指定命令路径PATH

尝试诊断问题的另一件事是cmd在pre-build event命令中明确指定,如下所示:

cmd /c C:\Path\to\foo.bat
Run Code Online (Sandbox Code Playgroud)

甚至

C:\windows\system32\cmd.exe /c C:\Path\to\foo.bat
Run Code Online (Sandbox Code Playgroud)


Joh*_*oon 3

看起来我的问题是批处理文件的路径长度。由于这是一个概念证明,我让 VS 在默认位置创建它:

C:\Documents and Settings\UserXXX\My Documents\Visual Studio 2010\Projects\SolutionXXX\ProjectXXX\foo.bat

一旦我将解决方案移动到路径较短的位置,它就可以正常工作。=P

感谢您的建议!