在此版本中,“退出代码9009”是什么意思?

时间:2009-08-29 16:31:50

标签: .net visual-studio

此错误消息是什么意思?我该怎么做才能解决这个问题?

  

AssemblyInfo.cs已退出,代码为9009


问题可能是Visual Studio中.NET解决方案中的构建后步骤的一部分。

34 个答案:

答案 0 :(得分:231)

您是否尝试提供在构建前或构建后事件命令中运行的命令的完整路径?

由于Visual Studio 2008中的xcopy post-build事件命令,我收到了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\

请注意,此示例中没有测试空格。

答案 1 :(得分:94)

错误代码9009表示找不到错误文件。这里答案中公布的所有潜在原因都是找出原因的好灵感,但错误本身只是一条糟糕的道路。

答案 2 :(得分:81)

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

call "$(DevEnvDir)..\Tools\vsvars32.bat"

应放在任何其他命令之前。
它将设置使用Microsoft Visual Studio 2010 x86工具的环境。

答案 3 :(得分:55)

很可能你的路径中有空间。

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

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

答案 4 :(得分:11)

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

答案 5 :(得分:10)

当我的帖子构建事件脚本试图运行指定路径中不存在的批处理文件时,我遇到了错误9009。

答案 6 :(得分:6)

如果脚本实际上做了它需要做的事情,那只是Visual Studio会误解你可以添加的错误:

exit 0

到你脚本的结尾。

答案 7 :(得分:6)

当我编辑Path环境变量时,我发生了这个错误。编辑后,我不小心将Path=添加到路径字符串的开头。使用这种格式错误的路径变量,我无法在命令行运行XCopy(没有找到命令或文件),并且Visual Studio拒绝运行构建后步骤,引用代码9009的错误。

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

答案 8 :(得分:5)

检查拼写。我试图调用可执行文件,但名称拼写错误,它给了我exited with code 9009消息。

答案 9 :(得分:5)

在我的情况下,在调用命令之前,我必须首先将“CD”(更改目录)放到正确的目录中,因为我正在调用的可执行文件位于我的项目目录中。

示例:

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

答案 10 :(得分:5)

我的确切错误是

The command "iscc /DConfigurationName=Debug "C:\Projects\Blahblahblah\setup.iss"" exited with code 9009.

9009表示找不到文件,但它实际上找不到" iscc"命令的一部分。

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

来修复它

答案 11 :(得分:4)

另一种变体:

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

答案 12 :(得分:4)

当我尝试在命令行中使用命令时,我的测试类库中的Post-build事件出现问题。当您使用这样的引号时:

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

或者如果你正在使用控制台:

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

这解决了我的问题。

答案 13 :(得分:3)

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

答案 14 :(得分:3)

此外,请确保项目的后期构建事件编辑窗口中没有换行符。有时在多线路上将xcopy命令从Web上复制并将其粘贴到VS中会导致问题。

答案 15 :(得分:2)

对我来说,磁盘空间很小,而且无法写入的文件预计会在以后出现。其他答案提到了丢失的文件(或错误名称/不正确引用的名称文件) - 但根本原因是缺少磁盘空间。

答案 16 :(得分:2)

tfa的答案被低估了,但实际上可能导致这个问题。 感谢hanzolo,我查看了输出窗口,发现了以下内容:

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.

运行npm install -g gulp后,我停止了此错误。如果您在Visual Studio中收到此错误,请检查输出窗口并查看问题是否为未设置的环境变量。

答案 17 :(得分:2)

与其他答案相同,在我的情况下,这是因为缺少文件。要知道丢失的文件是什么,您可以转到输出窗口,它会立即显示丢失的内容。

在Visual Studio中打开输出窗口:

  1. 按Ctrl + Alt + O
  2. 查看&gt;输出
  3. enter image description here

答案 18 :(得分:2)

由于路径中的空格,找不到另一种文件变体。在我的情况下,在msbuild脚本中。我需要在exec命令中使用HTML样式&amp; quot; 字符串。

<!-- 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" />

答案 19 :(得分:1)

我有同样的错误,这是由我的后期构建脚本引起的,我试图在命令提示符下逐行运行脚本。最后,我发现了根本原因是我没有填充.nuspec文件中丢失的信息,即用实际值替换$和$之间的所有变量,例如用我的名字替换$ author $

答案 20 :(得分:1)

这是非常基本的,我有这个问题,并且令人尴尬的简单失败。

应用程序使用命令行参数,我删除它们然后再添加它们。突然,该项目未能建成。

Visual Studio - &gt;项目属性 - &gt;验证您使用“调试”选项卡(而不是“构建事件”选项卡) - &gt;命令行参数

我使用了Post和Pre-build文本区域,这种情况不对。

答案 21 :(得分:1)

我通过重新启动Visual Studio来解决此问题-我刚刚在控制台窗口中运行dotnet tool install xxx,而VS尚未选择新的环境变量和/或已更改的路径设置,因此可以快速重新启动解决了这个问题。

答案 22 :(得分:1)

在遇到覆盖情况时,我也遇到了这个9009问题。

基本上,如果文件已经存在且您没有指定/y开关(自动覆盖),则从构建运行时可能会发生此错误。

答案 23 :(得分:1)

我的解决方案很简单:您是否尝试过将其关闭再打开?所以我重新启动了计算机,问题就消失了。

答案 24 :(得分:1)

对我而言,在一个大解决方案(~80项目)中将nuget软件包从一个PostSharp版本升级到下一个版本后发生了。 我在PreBuild事件中有命令的项目中遇到编译器错误。

&#39; CMD&#39;不被识别为内部或外部命令,可操作程序或批处理文件。 C:\ Program Files(x86)\ MSBuild \ 14.0 \ bin \ Microsoft.Common.CurrentVersion.targets(1249,5):错误MSB3073:命令&#34; cmd / c C:\ GitRepos \ main \ ServiceInterfaces \ DEV .Config \ PreBuild.cmd ServiceInterfaces&#34;退出代码9009。

PATH变量因PostSharp.Patterns.Diagnostics相关的多个重复路径而变得太长。 当我关闭Visual Studio并再次打开它时,问题得到解决。

答案 25 :(得分:0)

我的解决方案是创建文件的副本,并在构建任务中添加一个步骤,将我的文件复制到原始文件上。

    

答案 26 :(得分:0)

我认为在我的情况下路径中有俄语符号(所有项目都在用户文件夹中)。当我把解决方案放在另一个文件夹(直接在磁盘上)时,一切都变好了。

答案 27 :(得分:0)

您需要确保已全局安装了grunt

答案 28 :(得分:0)

另一个原因: 如果您的预构建事件引用了另一个项目bin路径,并且在运行msbuild而不是Visual Studio时看到此错误,那么您必须在* .sln文件中手动排列项目(使用文本编辑器)以便项目为您事件中的目标是在事件的项目之前构建的。换句话说,msbuild使用* .sln文件中列出项目的顺序,而VS使用项目依赖项的知识。当wixproj之后列出了一个创建要包含在wixproj中的数据库的工具时,我发生了这种情况。

答案 29 :(得分:0)

当我将App.config的属性更改为“始终复制”时,它就发生了

并通过撤消我所有的编辑来进行修复,然后进行构建以确保其有效

最终将其重置为始终复制并建立其工作状态

答案 30 :(得分:0)

至少在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)

答案 31 :(得分:0)

与一位同事发生。如果开发环境为Windows,而Visual Studio项目位于C:驱动器上。则应确保Visual Studio是在具有管理员权限的情况下运行的。 只需右键单击并“以管理员身份运行”。您还可以转到Visual Studio项目的属性->高级->并启用“以管理员身份运行”。

答案 32 :(得分:0)

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

答案 33 :(得分:0)

仔细检查 Output 标签。

这应该会揭示问题原因。

(例如,就我而言,它与评论有关:'#' is not recognized as an internal or external command, operable program or batch file.