此错误消息是什么意思?我该怎么做才能解决此问题?
AssemblyInfo.cs退出,代码为9009
该问题可能是在Visual Studio .NET解决方案中的后生成步骤中发生的。
此错误消息是什么意思?我该怎么做才能解决此问题?
AssemblyInfo.cs退出,代码为9009
该问题可能是在Visual Studio .NET解决方案中的后生成步骤中发生的。
Answers:
您是否尝试给出在构建前或构建后事件命令中运行的命令的完整路径?
由于xcopy
Visual Studio 2008中的生成后事件命令,我收到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\
请注意,此示例有关空格未经过测试。
"$(SolutionDir)packages\NUnit.2.5.10.11092\tools\"nunit-console "$(TargetPath)"
)中可以解决该问题。
PATH
环境变量是否有可能以某种方式丢失?我时不时地收到此错误。我已经将npm install
安装程序设置为预构建事件,并且最初可以正常工作(因此我认为一切都已设置好了),但是随后它会在白天(通常在我相信在解决方案/分支之间切换时)会停止工作。知道npm
。重新启动VS'修复'它...意味着我PATH
的设置正确,但是似乎被VS唤醒了。如果有一种方法可以从VS内部查看env变量,则可以确认这一点。
%systemroot%\System32\xcopy ...
错误代码9009表示找不到错误文件。答案中列出的所有潜在原因都是找出原因的良好灵感,但是错误本身仅意味着一条错误的道路。
当您缺少使用Microsoft Visual Studio x86工具的某些环境设置时,就会发生这种情况。
因此,请尝试在构建后步骤中添加第一个命令:
对于Visual Studio 2010,请使用:
call "$(DevEnvDir)..\Tools\vsvars32.bat"
正如@FlorianKoch在评论中提到的,对于VS 2017使用:
call "$(DevEnvDir)..\Tools\VsDevCmd.bat"
它应该放在任何其他命令之前。
它将设置使用Microsoft Visual Studio x86工具的环境。
call "$(DevEnvDir)..\Tools\vsvars32.bat"
吗?我必须在哪里以及向哪个文件添加行?谢谢
Path
环境变量中添加一个条目。检查“输出”窗口以获取更多信息。
"$(DevEnvDir)..\Tools\VsDevCmd.bat"
最终路径中很可能有空间。
您可以通过引用路径来解决此问题,从而留出空间。例如:
xcopy "$(SolutionDir)\Folder Name\File To Copy.ext" "$(TargetDir)" /R /Y /I
就我而言,由于调用的可执行文件位于我的项目目录中,因此在调用命令之前,我必须先将“ CD”(更改目录)更改为正确的目录。
例:
cd "$(SolutionDir)"
call "$(SolutionDir)build.bat"
另一个变体:
今天,我在Win32中从cron调用python解释器,并使用ExitCode(%ERRORLEVEL%)9009,因为cron使用的系统帐户没有Python目录的路径。
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中遇到此错误,请检查输出窗口,查看问题是否为未设置的环境变量。
另外,请确保项目的构建后事件编辑窗口中没有换行符。有时,在多行时从Web复制xcopy命令并将其粘贴到VS中会引起问题。
对我来说,这是在大型解决方案(约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并再次打开它时,此问题已解决。
由于路径中有空格,因此找不到文件的另一个变体。就我而言,在msbuild脚本中。我需要使用HTML样式“ exec命令中的字符串。
<!-- Needs quotes example with my Buildscript.msbuild file -->
<Exec Command=""$(MSBuildThisFileDirectory)\wix\wixscript.bat" $(VersionNumber) $(VersionNumberShort)"
ContinueOnError="false"
IgnoreExitCode="false"
WorkingDirectory="$(MSBuildProjectDirectory)\wix" />
我通过重新启动Visual Studio来解决此问题-我刚刚dotnet tool install xxx
在控制台窗口中运行,而VS尚未选择新的环境变量和/或更改的路径设置,因此快速重新启动解决了该问题。
我的解决方案很简单:您是否尝试过将其关闭然后再打开?因此,我重新启动计算机,问题消失了。
至少在Visual Studio Ultimate 2013版本12.0.30723.00更新3中,不可能用换行符分隔if / else语句:
作品:
if '$(BuildingInsideVisualStudio)' == 'true' (echo local) else (echo server)
不起作用:
if '$(BuildingInsideVisualStudio)' == 'true' (echo local)
else (echo server)
另一个原因:如果您的预构建事件引用了另一个项目bin路径,并且在运行msbuild而不是Visual Studio时看到此错误,则必须手动将项目安排在* .sln文件中(使用文本编辑器),这样您在事件中定位的项目是在事件的项目之前构建的。换句话说,msbuild使用项目在* .sln文件中列出的顺序,而VS使用项目依赖项的知识。在wixproj之后列出了一个创建数据库以包含在wixproj中的工具时,我发生了这种情况。
我认为在我的情况下,路径中有俄语符号(所有项目都在用户文件夹中)。当我将解决方案放在另一个文件夹(直接在磁盘上)后,一切正常。
我的解决方案是创建文件的副本,并向构建任务添加一个步骤,以将文件复制到原始文件上。