.net 什么是;退出,代码为9009“;你是说在建造过程中?

.net 什么是;退出,代码为9009“;你是说在建造过程中?,.net,visual-studio,.net,Visual Studio,这个错误消息是什么意思?我可以做些什么来更正此问题 AssemblyInfo.cs已退出,代码为9009 此问题可能是Visual Studio中.NET解决方案的后期生成步骤的一部分。另一个变体: 今天,我在win32中从cron调用python解释器,并使用ExitCode(%ERRORLEVEL%)9009,因为cron使用的系统帐户没有到python目录的路径。您是否尝试给出在生成前或生成后事件命令中运行的命令的完整路径 由于Visual Studio 2008中的xcopypost

这个错误消息是什么意思?我可以做些什么来更正此问题

AssemblyInfo.cs已退出,代码为9009


此问题可能是Visual Studio中.NET解决方案的后期生成步骤的一部分。

另一个变体:


今天,我在win32中从cron调用python解释器,并使用ExitCode(%ERRORLEVEL%)9009,因为cron使用的系统帐户没有到python目录的路径。

您是否尝试给出在生成前或生成后事件命令中运行的命令的完整路径

由于Visual Studio 2008中的
xcopy
post build event命令,我收到了9009错误

命令
“xcopy.exe/Y C:\projectpath\project.config C:\compilepath\”
已退出,代码为9009

但就我而言,这也是间歇性的。也就是说,错误消息会一直持续到计算机重新启动,并在计算机重新启动后消失。它是在一些我尚未发现的远程相关问题之后回来的

但是,在我的例子中,为命令提供完整路径解决了问题:

c:\windows\system32\xcopy.exe /Y C:\projectpath\project.config C:\compilepath\ 
而不仅仅是:

xcopy.exe /Y C:\projectpath\project.config C:\compilepath\
如果我没有完整的路径,它会在重新启动后运行一段时间,然后停止

同样如本文评论中所述,如果完整路径中有空格,则需要在命令周围加上引号。例如

"C:\The folder with spaces\ABCDEF\xcopy.exe" /Y C:\projectpath\project.config C:\compilepath\

请注意,此关于空格的示例未经测试。

最有可能的结果路径中有空格

您可以通过引用路径来解决这个问题,从而允许使用空格。例如:

xcopy "$(SolutionDir)\Folder Name\File To Copy.ext" "$(TargetDir)" /R /Y /I

如果脚本确实执行了它需要执行的操作,并且只是Visual Studio对错误进行了监听,则可以添加:

exit 0

到脚本结尾。

我的生成后事件脚本尝试运行指定路径中不存在的批处理文件时出现错误9009。

此外,请确保项目的生成后事件编辑窗口中没有换行符。有时,当xcopy命令是多行命令时,从web复制该命令并将其粘贴到VS中会导致问题。

当您缺少使用Microsoft Visual Studio x86工具的某些环境设置时,就会发生这种情况。
因此,请尝试将添加作为生成后步骤中的第一个命令:

对于Visual Studio 2010,请使用:

call "$(DevEnvDir)..\Tools\vsvars32.bat"
正如@FlorianKoch在评论中提到的,对于VS 2017,使用:

call "$(DevEnvDir)..\Tools\VsDevCmd.bat"
它应该放在任何其他命令之前。

它将设置使用Microsoft Visual Studio x86工具的环境。

检查拼写。我试图调用一个可执行文件,但名称拼错了,它给了我一条退出代码9009的
消息。

在Win 7中将PATH变量从环境变量更改为PATH变量后,具有相同的变量。更改回默认值很有帮助。

在我的例子中,在调用命令之前,我必须先“CD”(更改目录)到正确的目录,因为我调用的可执行文件在我的项目目录中

例如:

cd "$(SolutionDir)"
call "$(SolutionDir)build.bat"

本例中的问题发生在我尝试在命令行上为测试类库中的生成后事件使用命令时。当您使用这样的引号时:

"$(SolutionDir)\packages\NUnit.Runners.2.6.2\tools\nunit" "$(TargetPath)" 
或者,如果您正在使用控制台:

"$(SolutionDir)\packages\NUnit.Runners.2.6.2\tools\nunit-console" "$(TargetPath)"

这为我解决了这个问题。

我在预构建步骤中将“>myFile.txt”添加到行的末尾,然后检查该文件是否存在实际错误。

我在编辑Path环境变量时导致了此错误。编辑之后,我意外地在路径字符串的开头添加了
Path=
。有了这样一个格式错误的path变量,我无法在命令行上运行XCopy(找不到任何命令或文件),Visual Studio拒绝运行生成后步骤,原因是代码为9009


XCopy通常驻留在C:\Windows\System32中。一旦Path环境变量允许在DOS提示符下解析XCopy,Visual Studio就会很好地构建我的解决方案。

错误代码9009表示找不到错误文件。这里的答案中列出的所有潜在原因都能很好地解释原因,但错误本身意味着路径不正确。

对我来说,磁盘空间不足,无法写入的文件预计稍后会出现。其他答案提到缺少文件(或名称文件命名错误/引用不正确)——但根本原因是缺少磁盘空间。

实际上,我注意到由于某种原因,%windir%环境变量有时会被擦除。对我起作用的是将windir环境变量重新设置为c:\windows,重新启动VS,就这样。这样可以避免修改解决方案文件。

我的确切错误是

命令“iscc/DConfigurationName=Debug”C:\Projects\Blahblahblah\setup.iss”以代码9009退出。

9009表示找不到文件,但实际上找不到命令的“iscc”部分


我通过将
“C:\Program Files\Inno Setup 5(x86)\”
添加到系统环境变量
“path”

来修复它。这是一个非常基本的问题,我遇到了这个问题,并且简单地失败了

应用程序使用命令行参数时,我删除了它们,然后重新添加。突然,这个项目失败了

Visual Studio->项目属性->验证是否使用了“调试”选项卡(而不是“生成事件”选项卡)->命令行参数


我使用了and Post/Pre build文本区域,这在本例中是错误的。

至少在Visual Studio Ultimate 2013版本12.0.30723.00 Update 3中,不可能用换行符分隔if/else语句:

作品:

if '$(BuildingInsideVisualStudio)' == 'true' (echo local) else (echo server)
不起作用:

if '$(BuildingInsideVisualStudio)' == 'true' (echo local) 
else (echo server)
还有一个原因: 如果预生成事件引用了另一个项目bin路径,并且在运行msbuild(而不是Visual Studio)时看到此错误,则必须在*.sln文件中手动排列项目(使用文本编辑器),以便在事件的项目之前生成事件中的目标项目。换句话说
<!-- Needs quotes example with my Buildscript.msbuild file --> 
<Exec Command="&quot;$(MSBuildThisFileDirectory)\wix\wixscript.bat&quot; $(VersionNumber) $(VersionNumberShort)" 
    ContinueOnError="false" 
    IgnoreExitCode="false" 
    WorkingDirectory="$(MSBuildProjectDirectory)\wix" />
3>'gulp' is not recognized as an internal or external command,
3>operable program or batch file.
3>D:\dev\<filepath>\Web.csproj(4,5): error MSB3073: The command "gulp clean" exited with code 9009.