I converted an old VS2003 project into VS2005 and tried to build it with an existing Nant build script. Nant started to fail with a following error: Error loading GUID of project…
NAnt 0.85 (Build 0.85.2470.0; nightly; 10/6/2006)
Copyright (C) 2001-2006 Gerry Shaw
http://nant.sourceforge.net
Buildfile: file:///C:/projects/MyProject.build Target framework: Microsoft .NET Framework 2.0 Target(s) specified: Build
[echo] Using 'net-2.0' framework on 'win32' platform.
Build:
BuildProjects:
[echo] Current base directory: .
[echo] Building all projects under base directory...
[solution] Starting solution build.
BUILD FAILED - 0 non-fatal error(s), 1 warning(s)
Error loading GUID of project 'C:\MyProject\DBAccess.csproj'.
Couldn't locate ProjectGuid in project 'C:\MyProject\DBAccess.csproj'
Total time: 0.8 seconds.
My build file as below was working before I converted the project using VS2005.
<target name="Build"> ... <solution configuration="${configuration}"> <projects basedir="${basedir}"> <include name="**\*.csproj"/> </projects> </solution> </target>
After digging into the Nant online doc, I found that the current version of Nant doesn’t support VS2005 project . Visual Studio 2005 uses the MSBuild project file to store build information about managed projects. Project settings added and changed through Visual Studio are reflected in the .*proj file that is generated for each project. Visual Studio uses a hosted instance of MSBuild to build managed projects, meaning that a managed project can be built in Visual Studio and from the command line (even without Visual Studio installed), with identical results. Thus the solution is use MSBuild to build VS2005 project file. I changed the Nant script as below:
<target name="exec-msbuild"> <exec program="msbuild" commandline='"${solution.file}" /v:q /nologo /t:${solution.target} /p:Configuration=${configuration}' /> </target>
Now my project successfully migrated to VS2005 and .Net 2.0.