在此构建期间“以代码 9009 退出”是啥意思?

Posted

技术标签:

【中文标题】在此构建期间“以代码 9009 退出”是啥意思?【英文标题】:What does "exited with code 9009" mean during this build?在此构建期间“以代码 9009 退出”是什么意思? 【发布时间】:2010-11-24 00:32:21 【问题描述】:

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

AssemblyInfo.cs 以代码 9009 退出


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

【问题讨论】:

OP 不会回来解决这个问题,但它有很多答案和很多 Google 果汁。那么,让我们尝试推断问题所在? 输出窗口让我了解了我也遇到的这个问题 【参考方案1】:

signtool.exe 本身无法找到时,我实际上收到了此错误消息。为了解决这个问题,我将文件夹路径添加到 PATH 环境变量并重新启动 Visual Studio。

【讨论】:

【参考方案2】:

仔细检查Output 标签。

这应该可以揭示问题的原因。

(例如,在我的情况下,它与评论有关:'#' is not recognized as an internal or external command, operable program or batch file.

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

发生在一位同事身上。如果开发环境是 Windows 并且 Visual Studio 项目在 C: 驱动器上.. 则确保 Visual Studio 以管理员权限运行.. 只需右键单击并“以管理员身份运行”。你也可以去Visual Studio项目的属性->Advance->启用'以管理员身份运行'。

【讨论】:

【参考方案5】:

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

对于 Visual Studio 2010 使用:

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

正如 @FlorianKoch 在 cmets 中提到的,对于 VS 2017 使用:

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

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

【讨论】:

你能帮我吗?我必须在哪里和哪个文件中添加call "$(DevEnvDir)..\Tools\vsvars32.bat"这一行?谢谢 我必须在我的Path 环境变量中添加一个条目。检查输出窗口以获取更多信息。 小心。这将在许多构建服务器上失败:blogs.clariusconsulting.net/kzu/devenvdir-considered-harmful 谢谢,我解决了 x64 位工具链:"$(DevEnvDir)..\VC\vcvarsall.bat" 对于 VS 2017,文件是 "$(DevEnvDir)..\Tools\VsDevCmd.bat"【参考方案6】:

我通过简单地重新启动 Visual Studio 解决了这个问题 - 我刚刚在控制台窗口中运行 dotnet tool install xxx 并且 VS 还没有选择新的环境变量和/或更改的路径设置,所以快速重启修复了问题。

【讨论】:

【参考方案7】:

当我将 App.config 的属性更改为“始终复制”时发生这种情况

并通过撤消我的所有编辑来修复它,然后构建以确保它正常工作

最后重新设置它总是复制并构建它工作

【讨论】:

【参考方案8】:

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 中遇到此错误,请检查输出窗口并查看问题是否是未设置的环境变量。

【讨论】:

【参考方案9】:

你需要确保你已经全局安装了 grunt

【讨论】:

【参考方案10】:

很可能您的结果路径中有空间。

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

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

【讨论】:

+1 - 这正是我遇到的问题。当我在本地构建项目时,我的后期构建中的命令有效,但在构建服务器上构建时失败。我只是将命令放在双引号之间来修复它。谢谢。 那么推测错误9009是“找不到文件”是否合理?就个人而言,我认为问题是“什么是 MSBuild 错误 9009?”作为一个独立的问题应该是完全可以的,但指向微软!【参考方案11】:

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

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

【讨论】:

【参考方案12】:

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

【讨论】:

【参考方案13】:

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

在 Visual Studio 中打开输出窗口:

    Ctrl+Alt+O 查看>输出

【讨论】:

【参考方案14】:

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

【讨论】:

【参考方案15】:

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

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

【讨论】:

【参考方案16】:

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

'cmd' 不是内部或外部命令、可运行程序或批处理文件。 C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1249,5):错误 MSB3073:命令“cmd /c C:\GitRepos\main\ServiceInterfaces\DEV.Config\ PreBuild.cmd ServiceInterfaces" 退出,代码为 9009。

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

【讨论】:

【参考方案17】:

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

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

如果我没有完整路径,它会在重新启动后运行一段时间,然后停止。

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

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

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

【讨论】:

我还收到了关于发布和预构建事件的 9009 错误。检查 Visual Studio 中的“输出”选项卡会显示问题。就我而言,我试图访问包含空格的路径 我遇到了类似的问题,但这是文件夹名称中空格的结果。将路径放在引号中 ("$(SolutionDir)packages\NUnit.2.5.10.11092\tools\"nunit-console "$(TargetPath)") 解决了它。 我在使用 Java 小程序预编译 JS 和 CSS 的预构建事件中遇到了类似的问题......结果我们忽略了将 Java 运行时放在服务器上。跨度> PATH 环境变量是否有可能以某种方式丢失?我时不时地收到这个错误。我将npm install 设置为预构建事件,最初它可以工作(所以我认为一切都已设置),但随后它会随机在白天停止工作(通常在我相信的解决方案/分支之间切换时),它将不再知道npm。重新启动 VS '修复'它......意味着我的 PATH 设置正确,但似乎被 VS 起来了。如果有办法从 VS 内部查看环境变量,我可以确认这一点。 如果你想保护你的构建不会在不同的环境中崩溃,比如安装在 D:\ 上的 windows,请结合使用环境变量 @thehhv 答案:%systemroot%\System32\xcopy ...【参考方案18】:

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

【讨论】:

【参考方案19】:

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

【讨论】:

【参考方案20】:

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

【讨论】:

【参考方案21】:

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

应用程序使用命令行参数,我删除了它们,然后将它们添加回来。项目突然构建失败。

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

我使用了 Post/Pre-build 文本区域,在这种情况下是错误的。

【讨论】:

【参考方案22】:

当我尝试在我的测试类库中的 Post-build 事件的命令行上使用命令时,发生了我的问题。当你像这样使用引号时:

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

或者如果您使用的是控制台:

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

这为我解决了这个问题。

【讨论】:

【参考方案23】:

我的确切错误是

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

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

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

【讨论】:

【参考方案24】:

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

【讨论】:

【参考方案25】:

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

【讨论】:

【参考方案26】:

错误代码 9009 表示未找到错误文件。此处答案中发布的所有根本原因都是找出原因的良好灵感,但错误本身只是意味着一条错误的道路。

【讨论】:

我找不到文件的问题是 csproj 文件中的引用是 $(PROGRAMFILES)\Microsoft SDKs\TypeScript\tsc 并且必须是 $(PROGRAMFILES)\Microsoft SDKs\TypeScript\1.0\tsc 感谢您实际回答第一个问题。 这意味着找不到任何尝试的命令可能涉及的文件,因此即使它找不到命令本身。我使用的是删除而不是德尔。那也会给你一个 9009。【参考方案27】:

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

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

【讨论】:

【参考方案28】:

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

【讨论】:

【参考方案29】:

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

例子:

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

【讨论】:

这解决了我运行 Visual Studio 的 devenv.exe 的问题,但是您不需要第二次指定文件夹,只需调用 build.bat 即可【参考方案30】:

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

【讨论】:

以上是关于在此构建期间“以代码 9009 退出”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

period是啥意思

period是啥意思

period是啥意思

period是啥意思

period 是啥意思

period是啥意思中文