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

Reply via email to