What does "exited with code 9009" mean during this build?
Asked Answered
M

36

346

What does this error message mean? What could I do to correct this issue?

AssemblyInfo.cs exited with code 9009


The problem is probably happening as part of a post-build step in a .NET solution in Visual Studio.

Matsu answered 29/8, 2009 at 16:31 Comment(2)
The OP isn't coming back to fix this problem, but it has a lot of answers and a lot of Google juice. So, let's try to infer the problem?China
The Output Window gave me some insight into this problem which i was also havingPriestridden
V
255

Did you try to give the full path of the command that is running in the pre- or post-build event command?

I was getting the 9009 error due to a xcopy post-build event command in Visual Studio 2008.

The command "xcopy.exe /Y C:\projectpath\project.config C:\compilepath\" exited with code 9009.

But in my case it was also intermittent. That is, the error message persists until a restart of the computer, and disappears after a restart of the computer. It is back after some remotely related issue I am yet to discover.

However, in my case providing the command with its full path solved the issue:

c:\windows\system32\xcopy.exe /Y C:\projectpath\project.config C:\compilepath\ 

Instead of just:

xcopy.exe /Y C:\projectpath\project.config C:\compilepath\

If I do not have the full path, it runs for a while after a restart, and then stops.

Also as mentioned on the comments to this post, if there are spaces in full path, then one needs quotation marks around the command. E.g.

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

Note that this example with regards to spaces is not tested.

Volkslied answered 17/2, 2010 at 15:12 Comment(12)
I also received the 9009 error on post and pre build events. Checking the Output tab in Visual Studio shows the problem. In my case I was trying to access a path containing a spaceOrfinger
I had a similar problem to this, but it was the result of spaces in the folder names. Putting the paths in quotes ("$(SolutionDir)packages\NUnit.2.5.10.11092\tools\"nunit-console "$(TargetPath)") resolved it.Metheglin
I encountered a similar issue with a pre-build event that used a Java applet to pre-compile JS and CSS...turns out we had neglected to put the Java Runtime on the server.Budwig
Is it possible that the PATH environment variable gets lost somehow? I get this error every now and then. I have npm install setup as a pre-build event, and initially it works (so I presume everything is setup), but then randomly it will stop working during the day (generally when switching between solutions / branches I believe), and it will no longer know about npm. Restarting VS 'fixes' it... meaning my PATH is setup correctly, but seems to get up by VS. If there was a way to view the env variables from inside VS I could confirm this.Rejuvenate
So, I've installed Powershell Tools for Visual Studio. Trying gci env:Path | format-list seems to point to VS messing up its internal state of the PATH variable?Rejuvenate
Yup, If I run $env:Path+=";C:\Program Files\nodejs" in the Powershell Tools window, the build proceeds again... where do I submit a bug report :)Rejuvenate
If you want to protect your build from crashing in different environments, let's say, windows installed on D:\, use environment vars in conjunction of @Volkslied answer: %systemroot%\System32\xcopy ...Beagle
Adding quotation marks resolved this for me, but I am running the command via a .proj file, so I needed to encode the quotation marks as "Neil
Must be nice to be these people in the comments. Quoting doesn't work for me. How can anyone stand to use windows build tools? They are infuriating.Cuthburt
Restarting fixed itSheepdip
If doing this in MSBuild, use " to surround the command.Depilate
As mentioned above, missing command. In our case git.exe on a developer's PC needed by the .csproj file that contained an execution target to fill the assemblyinfo.cs file: the BeforeBuild target <Target Name="BeforeBuild"> <Exec Condition=" '$(BuildRev)'==''" WorkingDirectory="$(ProjectDir)" Command="git rev-list --count HEAD" ConsoleToMSBuild="true"> <Output TaskParameter="ConsoleOutput" PropertyName="BuildRev" /> </Exec>Theo
T
144

Error Code 9009 means error file not found. All the underlying reasons posted in the answers here are good inspiration to figure out why, but the error itself simply means a bad path.

Tights answered 16/3, 2014 at 5:29 Comment(3)
My issue with file not found was the reference in the csproj file was $(PROGRAMFILES)\Microsoft SDKs\TypeScript\tsc and had to be $(PROGRAMFILES)\Microsoft SDKs\TypeScript\1.0\tscDockery
Thanks for actually answering the first question.Moist
And it means not finding any file the attempted command may be involving, thus even when it couldn't find the command itself. I was using delete instead of del. That would give you a 9009 too.Haines
G
88

It happens when you are missing some environment settings for using Microsoft Visual Studio x86 tools.
Therefore, try adding as a first command in your post-build steps:

For Visual Studio 2010 use:

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

As @FlorianKoch mentioned in comments, for VS 2017 use:

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

It should be placed before any other command.
It will set environment for using Microsoft Visual Studio x86 tools.

Gran answered 3/4, 2012 at 9:7 Comment(7)
Could you help me out - where and into which file do i have to add the line call "$(DevEnvDir)..\Tools\vsvars32.bat"? ThanksCoheir
I had to add an entry to my Path environment variable. Check the Output window for more information.Regularize
Caution. This will fail on many build servers: blogs.clariusconsulting.net/kzu/devenvdir-considered-harmfulGuerrilla
Thank you, for x64 bit toolchain I solved like so: "$(DevEnvDir)..\VC\vcvarsall.bat"Bores
It might be worth mentioning that this bat will easily add 3+ seconds to whatever runs it. This is why the VS Command Prompt takes significantly longer to run than a normal command prompt to start (3+ seconds vs 0 seconds). Might not be a big deal, but worth mentioning. If you're using it to prevent needing to enter a few extra chars by providing a full path to an exe... well stop being lazy :). There are other reasons, though, why this would be helpful.Aaron
Late comment, but perhaps important to you as it was to me: -- The call ...vsvars32.bat call may change your drive and current directory. In a batch script, a mere cd %~dp0 will change the current directory, BUT NOT THE DRIVE. If you are doing this in a script, then use pushd %~dp0 to force it to also reset the drive.Elgar
For VS 2017 the file is "$(DevEnvDir)..\Tools\VsDevCmd.bat"Everett
R
59

Most probably you have space in your resultant path.

You can work around this by quoting the paths, thus allowing spaces. For example:

xcopy "$(SolutionDir)\Folder Name\File To Copy.ext" "$(TargetDir)" /R /Y /I
Refreshing answered 13/8, 2010 at 5:5 Comment(2)
+1 - This is exactly the problem I was having. A command in my post-build worked when I built the project locally, but failed when it was built on the build server. I just placed the command between double quotes to fix it. Thanks.Rumilly
So is it reasonable to speculate that error 9009 is "file not found"..? Personally, I think the question "what is MSBuild error 9009?" should be perfectly fine as a stand-alone question, but directed to Microsoft!Trondheim
A
12

Had the same variable after changing PATH variable from Environmental Variables in Win 7. Changing back to default helped.

Agripinaagrippa answered 19/6, 2012 at 9:7 Comment(0)
S
10

I have had the error 9009 when my post build event script was trying to run a batch file that did not exist in the path specified.

Sestet answered 16/6, 2011 at 3:34 Comment(0)
R
8

My exact error was

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

9009 means file not found, but it actually couldn't find the "iscc" part of the command.

I fixed it by adding ";C:\Program Files\Inno Setup 5 (x86)\" to the system environment variable "path"

Replevin answered 16/10, 2014 at 22:17 Comment(0)
K
6

In my case I had to "CD" (Change Directory) to the proper directory first, before calling the command, since the executable I was calling was in my project directory.

Example:

cd "$(SolutionDir)"
call "$(SolutionDir)build.bat"
Kandicekandinsky answered 3/5, 2013 at 20:9 Comment(1)
This fixed the problem for me running Visual Studio's devenv.exe, but you don't need to specify the folder the second time, just'call build.bat will doIain
A
6

I caused this error to happen when I redacted my Path environment variable. After editing, I accidentally added Path= to the beginning of the path string. With such a malformed path variable, I was unable to run XCopy at the command line (no command or file not found), and Visual Studio refused to run post-build step, citing error with code 9009.

XCopy commonly resides in C:\Windows\System32. Once the Path environment variable allowed XCopy to get resolved at DOS prompt, Visual Studio built my solution well.

Arjun answered 2/1, 2014 at 16:23 Comment(0)
M
5

If the script actually does what it needs to do and it's just Visual Studio bugging you about the error you could just add:

exit 0

to the end of you script.

Multitude answered 4/5, 2011 at 8:6 Comment(2)
hiding any potential error should not be the way to goCompetent
I agree this should not be maskedEllen
D
5

Check the spelling. I was trying to call an executable but had the name misspelled and it gave me the exited with code 9009 message.

Dhiman answered 6/6, 2012 at 20:17 Comment(1)
To that add a check for the existence of the executable on your system at all.Sokul
F
5

tfa's answer has been downvoted, but actually can cause this issue. Thanks to hanzolo, I looked in the output window and found the following:

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.

After running npm install -g gulp, I stopped getting this error. If you're getting this error in Visual Studio, check the output window and see if the issue is an unset environment variable.

Fascine answered 27/3, 2018 at 15:54 Comment(0)
M
4

Another variant:

today I call python interpreter from cron in win32 and take ExitCode (%ERRORLEVEL%) 9009, because system account used by cron don't have path to Python directory.

Matrilineal answered 24/12, 2009 at 9:18 Comment(0)
C
4

The problem in my case occurred when I tried to use a command on the command-line for the Post-build event in my Test Class Library. When you use quotation marks like so:

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

or if you're using the console:

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

This fixed the issue for me.

Cyndy answered 15/5, 2013 at 14:52 Comment(0)
L
3

Also, make sure there are no line breaks in the post build event editing window on your project. Sometimes copying the xcopy command from the web when it's multi-line and pasting it into VS will cause a problem.

Labdanum answered 5/1, 2012 at 20:27 Comment(1)
Although jesse makes a good point about not having line breaks in the middle of an xcopy command, note that in the general case it is valid to have line breaks in this field; each line should be interpreted as its own command.Xylophone
D
3

I added "> myFile.txt" to the end of the line in the pre-build step and then inspected the file for the actual error.

Deductible answered 30/8, 2013 at 13:19 Comment(0)
S
3

Same as the other answers, in my case it was because of the missing file. To know what is the missing file, you can go to the output window and it will show you straight away what went missing.

To open the output window in Visual Studio:

  1. Ctrl+Alt+O
  2. View > Output

enter image description here

Simdars answered 8/6, 2017 at 4:4 Comment(0)
S
3

I fixed this by simply restarting Visual Studio - I had just run dotnet tool install xxx in a console window and VS hadn't yet picked up the new environment variables and/or path settings that were changed, so a quick restart fixed the issue.

Sirup answered 6/5, 2019 at 21:37 Comment(0)
F
2

For me, disk space was low, and files that couldn't be written were expected to be present later. Other answers mentioned missing files (or misnamed/improperly referenced-by-name files)--but the root cause was lack of disk space.

Frisby answered 11/7, 2014 at 0:41 Comment(0)
M
2

For me it happened after upgrade nuget packages from one PostSharp version to next one in a big solution (~80 project). I've got compiler errors for projects that have commands in PreBuild events.

'cmd' is not recognized as an internal or external command, operable program or batch file. C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1249,5): error MSB3073: The command "cmd /c C:\GitRepos\main\ServiceInterfaces\DEV.Config\PreBuild.cmd ServiceInterfaces" exited with code 9009.

PATH variable was corrupted becoming too long with multiple repeated paths related to PostSharp.Patterns.Diagnostics. When I closed Visual Studio and opened it again, the problem was fixed.

Merce answered 23/4, 2016 at 12:12 Comment(0)
T
2

Yet another variant of file not found, because of spaces in the path. In my case in the msbuild script. I needed to use HTML style &quot; strings within the exec command.

<!-- 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" />
Theo answered 27/6, 2016 at 14:26 Comment(0)
A
1

This is pretty basic, I had this problem, and embarrassing simple fail.

Application use Command line arguments, I removed them and then added them back. Suddenly the project failed to build.

Visual Studio -> Project Properties -> verify that you use 'Debug' tab (not 'Build Events' tab) -> Command Line Arguments

I used the and Post/Pre-build text area, which was wrong this case.

Analogue answered 8/12, 2014 at 12:3 Comment(0)
F
1

My solution was just simple as: have you tried turning it off and on again? So I restarted the computer and the issue was gone.

Fee answered 24/10, 2016 at 20:32 Comment(0)
H
1

I also ran into this 9009 problem when facing an overwrite situation.

Basically, if the file already exists and you have not specified the /y switch (which automatically overwrites) this error can happen when run from a build.

Hoxsie answered 29/8, 2017 at 18:32 Comment(0)
F
1

Happened with a colleague. If development environment is windows and visual studio project is on C: drive.. Than make sure that visual studio is run with administrator right.. simply right click and 'Run as administrator'. You can also go to the properties of visual studio project -> Advance -> and enable 'Run as administrator'.

Flunk answered 21/3, 2020 at 18:53 Comment(0)
B
1

I had the same error caused by my post build script and I tried to run the script line by line in the command prompt. Finally I found out the root cause is I did not populate the missing information in the .nuspec file, i.e. replacing all the variables between $ and $ with the actual value, e.g. replacing $author$ with my name

Beverlee answered 17/7, 2020 at 16:9 Comment(0)
T
1

Check the Output tab carefully.

That should reveal the issue reason.

(E.g. in my case it was related to a comment: '#' is not recognized as an internal or external command, operable program or batch file.)

Tamarin answered 10/3, 2021 at 23:17 Comment(0)
L
1

I had similar issue and I received:

The command ""C:\Users<user>\Downloads\sandbox-attacksurface-analysis-tools-c02ed8ba04324e54a0a188ab9877ee6aa372dfac\packages\XmlDoc2CmdletDoc.0.3.0\build..\tools" -excludeParameterSets "" -strict "C:\Users<user>\Downloads\sandbox-attacksurface-analysis-tools-c02ed8ba04324e54a0a188ab9877ee6aa372dfac\bin\Debug\NtObjectManager.dll"" exited with code 9009.

I went to the project properties > Build and unchecked the XML documentation file:
enter image description here

After that, I rebuild the project and it disappeared. The weird thing is that after I checked the checkbox again and rebuild it, the error didn't return.
Ghosting bug..

Libau answered 2/1, 2023 at 13:34 Comment(0)
C
0

Actually I noticed that for some reason the %windir% environment variable sometimes get erased. What worked for me was re-set the windir environment variable to c:\windows, restart VS, and that's it. That way you prevent having to modify the solution files.

Cimmerian answered 30/7, 2014 at 12:42 Comment(0)
A
0

At least in Visual Studio Ultimate 2013, Version 12.0.30723.00 Update 3, it's not possible to separate an if/else statement with a line break:

works:

if '$(BuildingInsideVisualStudio)' == 'true' (echo local) else (echo server)

doesn't work:

if '$(BuildingInsideVisualStudio)' == 'true' (echo local) 
else (echo server)
Afterclap answered 10/6, 2015 at 12:59 Comment(0)
B
0

Yet another reason: If your pre-build event references another projects bin path and you see this error when running msbuild, but not Visual Studio, then you have to manually arrange the projects in the *.sln file (with a text editor) so that the project you are targeting in the event is built before the event's project. In other words, msbuild uses the order that projects are listed in the *.sln file whereas VS uses knowledge of project dependencies. I had this happen when a tool that creates a database to be included in a wixproj was listed after the wixproj.

Briant answered 8/7, 2015 at 17:56 Comment(0)
B
0

I think in my case there were russian symbols in path (all projects were in user folder). When I put solution in another folder (directly on disk), everything became ok.

Bergeron answered 19/8, 2015 at 12:31 Comment(0)
C
0

My solution was to create a copy of the file and add a step to the build task to copy my file over the original.

Curitiba answered 21/7, 2017 at 22:8 Comment(0)
S
0

it happen with me when i change properties of App.config to be Copy Always

and fix it by undo all my edits then build to make sure it worked

finally reset it again copy always and build it worked

Slimsy answered 31/3, 2019 at 8:38 Comment(0)
N
0

I actually got this error message when signtool.exe itself could not be found. To fix this I added the folder path to the PATH environment variable and restarted Visual Studio.

Novak answered 20/1, 2022 at 11:27 Comment(0)
N
-1

You need to make sure you have installed grunt globally

Nesselrode answered 14/12, 2017 at 11:57 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.