I have been sorting out some builds for use with Release Management that include Azure Cloud Solutions. To get the correct packages built by TFS I have followed the process in my past blog post. The problem was I kept getting the build error
The target "Azure PackagesBlackMarble.Win8AppBuilder.AzureApi" does not exist in the project.
The issue was I could not get the solution folder/project name right for the MSBUILD target parameter. Was it the spaces in the folder? I just did not know.
The solution was to check the .PROJ file that was actually being run by MSBUILD. As you may know a .SLN file is not in MSBUILD format so you can’t just open it in notepad and look (unlike a .CSPROJ or .VBPROJ files), it is created by MSBUILD on the fly. To see this generated code, at a developer’s command prompt, run the following commands
cd c:mysolutionroot
Set MSBuildEmitSolution=1
msbuild
When the MSBUILD command is run, whether the build works or not, there should be mysolution.sln.metaproj file created. If you look in this file you will see the actual targets MSBUILD thinks it is dealing with.
In my case I could see
<Target Name="Azure PackagesBlackMarble\_Win8AppBuilder\_AzureApi:Publish">
So the first issue was my . were replaced by _
I changed my MSBUILD target argument to that shown in the file, but still had a problem. However, once I changed by space in the solution folder to %20 all was OK. So my final MSBUILD argument was
/t:Azure%20PackagesBlackMarble\_Win8AppBuilder\_AzureApi:Publish