Tony, I have done quite extensive work with VS2005 web-based projects and Nant--have tried a large variety of combinations.
This is what seems to work the best for us: 1) Add to your web solution a web deploy project and send the output to a 'staging' directory. A web deploy project will 'stage' your web site to a separate 'staging' directory. In addition, the web deploy project can be configured to pre-compile your aspx files to one or a collection of assembly DLLs. The web deploy project will create these and put the in the runtime image generated in the 'staging' directory. 2) Use MSBuild to build your solution. Incorporate MSBuild task support into Nant by adding the NantContrib package to your Nant installation. 3) Pay careful attention to the MSBuild temporary directory and the web deploy target directories to insure they don't conflict with your working source directory. 4) Add additional Nant targets, or expand your targets to customize the resulting staged, runtime image of your application. For example, folding in external OEM or separately developed projects or code. It is possible to customize the MSBuild project file in a web deploy project, but I found it to be difficult and cumbersome. I had much better success with the Nant file and directory tasks for fine-tuning my staged images. Let me know if you need any more info--happy to help. Ken Parrish Gomez, Inc. Lexington, MA -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Tony Selke Sent: Thursday, April 17, 2008 8:19 AM To: nant-users@lists.sourceforge.net Subject: [NAnt-users] VS2005 Web Projects; still trying So I have been playing with this some more and I have some more context and a new theory. :-) When you use Visual Studio to add a website from the file system, there is no *.[cs|vb]proj file. It's just a directory. And this is how it gets written to the VS2005 solution file, like so: Project("{GUID}") = "C:\...\PMI\", "RootNS.Web.Portal.UI.Search\PMI", "{GUID}" Now, add to that this known "feature" in Windows, where directories are read only and you can't effectively change it (BTW, their attrib work-around still leaves my directories read-only, but the files are fine and all other non-web NAnt solution tasks work flawlessly): http://support.microsoft.com/kb/326549/ When you use the NAnt <solution> task, it uses the solution file to figure out what projects to build and where they are located. In the case of web projects, it has <map> elements to convert the URLs to physical file paths. This is all well and good if you use IIS for your web projects. So here's the part where my "facts" turn to conjecture and hypothesis: Unfortunately, this seems to break-down when using path-based web projects. There is no effective way to use the <map> elements that I have found and left to its own devices, NAnt appears to try and "open" the directory it finds in the solution where it expects a project. Since the directory is read-only, I get the somewhat misleading, but perfectly accurate "access denied" error. Does anyone have any experience using NAnt in general and/or the <solution> task in particular to build file-based web site projects in Visual Studio 2005? Tony Tony Selke wrote: > I am converting our MSBuild scripts to NAnt and most of our solutions > have been happily compiling using the <solution> task. We do have a > handful of ASP.NET applications that need to be compiled as well, but I > am having trouble getting this to work. I am using the NAnt 0.86 > nightly build from 02-10-2008 so that I can get VS2005 support. I am > not running IIS and I would prefer not to need to do so on my build server. > > My simplest example is a "test wrapper" web site that is the testing > project for a custom WebPart. This solution has one project that > generates a class library (with the web part) and another "project" that > is just a web site in a file directory. The project definitions from my > solution file are shown below if it helps. > > So I have been trying the following solution task (hopefully the > property names are descriptive enough): > > <solution configuration="${BuildConfig}" includevsfolders="true" > outputdir="${OutputRoot}\${BuildConfig}\${SolutionName}" > solutionfile="${SourceRoot}\${SolutionName}.sln" failonerror="true" > verbose="${VerboseOutput}"> > <assemblyfolders> > <include name="${ReferenceRoot}\${BuildConfig}" /> > </assemblyfolders> > <!-- > <webmap> > <map url="http://localhost/PMI/${SolutionName}.csproj" > path="${SourceRoot}\${SolutionName}\${SolutionName}.csproj" > casesensitive="false" /> > </webmap> > --> > </solution> > > I have tried with and without the webmap and I have tried a webmap who's > URL was a file:// pointing to the website directory. I always get the > error: > > Error checking whether > 'C:\APS\PMI\Dev\RootNS.Web\RootNS.Web.Portal.UI.Search\PMI' is an > enterprise template project. > Access to the path > 'C:\APS\PMI\Dev\RootNS.Web\RootNS.Web.Portal.UI.Search\PMI' is denied. > > I don't believe this "access denied" message, since I am running this as > a member of the local administrators group and this same code works fin > on all non-ASP.NET solutions. I am more inclined to believe that it is > looking for something it can't find, but what? > > Am I just doing this entirely all wrong, or is there something subtle I > am missing? > > Thanks in advance. > > Tony > > <><><><> > > Microsoft Visual Studio Solution File, Format Version 9.00 > # Visual Studio 2005 > Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = > "RootNS.Web.Portal.UI.Search", > "RootNS.Web.Portal.UI.Search\RootNS.Web.Portal.UI.Search.csproj", > "{44D1F85A-FD4E-43AB-8F65-5CE212313F1B}" > ProjectSection(WebsiteProperties) = preProject > Debug.AspNetCompiler.Debug = "True" > Release.AspNetCompiler.Debug = "False" > EndProjectSection > EndProject > Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "C:\...\PMI\", > "RootNS.Web.Portal.UI.Search\PMI", "{1DDD45BD-976E-4EEE-B943-620724C1BA66}" > ProjectSection(WebsiteProperties) = preProject > Debug.AspNetCompiler.VirtualPath = "/PMI" > Debug.AspNetCompiler.PhysicalPath = > "RootNS.Web.Portal.UI.Search\PMI\" > Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\PMI\" > Debug.AspNetCompiler.Updateable = "true" > Debug.AspNetCompiler.ForceOverwrite = "true" > Debug.AspNetCompiler.FixedNames = "false" > Debug.AspNetCompiler.Debug = "True" > Release.AspNetCompiler.VirtualPath = "/PMI" > Release.AspNetCompiler.PhysicalPath = > "RootNS.Web.Portal.UI.Search\PMI\" > Release.AspNetCompiler.TargetPath = "PrecompiledWeb\PMI\" > Release.AspNetCompiler.Updateable = "true" > Release.AspNetCompiler.ForceOverwrite = "true" > Release.AspNetCompiler.FixedNames = "false" > Release.AspNetCompiler.Debug = "False" > VWDPort = "1939" > EndProjectSection > EndProject > > <><><><> > > > ------------------------------------------------------------------------ - > This SF.net email is sponsored by the 2008 JavaOne(SM) Conference > Don't miss this year's exciting event. There's still time to save $100. > Use priority code J8TL2D2. > http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/j avaone > _______________________________________________ > NAnt-users mailing list > NAnt-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/nant-users ------------------------------------------------------------------------ - This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/j avaone _______________________________________________ NAnt-users mailing list NAnt-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nant-users ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone _______________________________________________ NAnt-users mailing list NAnt-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nant-users