RE: [nant-dev] solution task question
That's correct behavior that also happens when compiling from VS.NET; referenced DLLs get copied to the executable folder. You can change this behavior from VS.NET if you go to the properties of the reference and set copy local to false. Unless you are putting probing directives into your configuration file, your DLLs either need to be in the same folder as your executable or they have to be strongly named and placed in the GAC. I assume this is all correctly in the solution task since we use it extensively in a large project with some GAC dlls, some project dlls and some copy local dlls referenced directly. - TFC From: Martin Aliger [mailto:[EMAIL PROTECTED] Sent: Tuesday, September 02, 2003 6:49 AM To: ! nant Hi all, What should this code in Reference::GetReferenceFiles do? // Get a list of the references in the output directory foreach (string referenceFile in Directory.GetFiles(fi.DirectoryName, *.dll)) { // Now for each reference, get the related files (.xml, .pdf, etc...) string relatedFiles = Path.GetFileName(Path.ChangeExtension(referenceFile, .*)); foreach (string relatedFile in Directory.GetFiles(fi.DirectoryName, relatedFiles)) { // Ignore any other the garbage files created string fileExtension = Path.GetExtension(relatedFile).ToLower(CultureInfo.InvariantCulture); if (fileExtension != .dll fileExtension != .xml fileExtension != .pdb) { continue; } referencedFiles.Add(new FileInfo(relatedFile).Name); } } I do not underestand it at all. I have project which references assembly not in solution but in precompiled dll. It is in folder together with other 50 dlls which have no link with this one. And this code copy all that dlls to mine output directory! Regards, Martin --- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Patch for solution task
For c-sharp, get the nowarn settings from the project file and pass on to the compiler. The patch is inline below my signature. Thanks in advance for posting it. - Tom Cabanski, President Objective Advantage, Inc. http://www.oai.cc Phone: +1-281-348-2517x15 cvs diff (in directory C:\cvsroot\nant\src\NAnt.VSNet\) cvs server: Diffing . Index: ConfigurationSettings.cs === RCS file: /cvsroot/nant/nant/src/NAnt.VSNet/ConfigurationSettings.cs,v retrieving revision 1.5 diff -r1.5 ConfigurationSettings.cs 72a73 htStringSettings[NoWarn] = /nowarn:{0}; --- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Patch for Solution Task
Solution task sometimes puts two dots in resource names where there should only be one. This patch fixes the problem. Can someone apply it for me? The patch is inline below my signature. Thanks - Tom Cabanski, President Objective Advantage, Inc. http://www.oai.cc Phone: +1-281-348-2517x15 cvs diff Resource.cs (in directory C:\cvsroot\nant\src\NAnt.VSNet\) Index: Resource.cs === RCS file: /cvsroot/nant/nant/src/NAnt.VSNet/Resource.cs,v retrieving revision 1.13 diff -r1.13 Resource.cs 22a23 using System.Text; 222c223,234 strOutFile = _projectSettings.RootNamespace + . + Path.GetDirectoryName(_resourceSourceFileRelativePath).Replace(\\, .) + . + Path.GetFileNameWithoutExtension(_resourceSourceFile) + .resources; --- StringBuilder sb = new StringBuilder(); if (_projectSettings.RootNamespace.Trim().Length 0) { sb.Append(_projectSettings.RootNamespace); } if (Path.GetDirectoryName(_resourceSourceFileRelativePath).Length 0) { sb.AppendFormat(.{0}, Path.GetDirectoryName(_resourceSourceFileRelativePath).Replace(\\, .)); } if (_resourceSourceFile.Trim().Length 0) { sb.AppendFormat(.{0}, Path.GetFileNameWithoutExtension(_resourceSourceFile)); } sb.Append(.resources); strOutFile = sb.ToString(); --- This SF.net email is sponsored by: VM Ware With VMware you can run multiple operating systems on a single machine. WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines at the same time. Free trial click here:http://www.vmware.com/wl/offer/358/0 ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
RE: [nant-dev] Contributing
I have a question about that attribute. I was just following what I saw elsewhere and assumed that's what I needed to do to work with the webmap subelement of the solution element in the same fashion as file sets work. If you recall, I had originally implemented the webmap as an attribute on the solution task itself that named an external file to contain the webmap and changed it on the advice of a couple people on this list; when I did so I simply followed the model I saw in fileset (hence my incorrect summary comment on the WebMapAttribute class) without digging deep to understand precisely how the xml is parsed and passed to the class constructors. If the attribute is not required, can someone explain how the xml subelement ends up triggering the construction of the WebMap class or point out a better example than fileset? Thanks TFC -Original Message- From: Gert Driesen [mailto:[EMAIL PROTECTED] Sent: Saturday, August 16, 2003 4:41 AM To: Tom Cabanski; [EMAIL PROTECTED] Hi Tom, I'll look into committing your patch later today. I'll probable change your WebMap class to be a strongly typed collection, and remove your WebMapAttribute class as I don't see any added value in that. Keep the patches coming !! Gert - Original Message - From: Tom Cabanski [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, August 13, 2003 11:47 PM Subject: [nant-dev] Contributing I've cleaned up a variety of little bugs in the solution task as follows: Leaks temp files under some circumstances (e.g. read-only files cannot be deleted). Fixed. Define settings are not read from project file (e.g. TRACE;DEBUG). Fixed. Resource compiles blow up under some circumstances because of changes to the ResGen task. Fixed. I've also added a couple new features because the WebDAV thing was such a pain. The Solution task now includes the following attributes: webmap(optional): A fileset that maps the URL of web projects to the physical path. solution ... webmap map url=http://localhost/a/a.csproj path=c:\inetpub\wwwroot\a\a.csproj/ map url=http://localhost/b/b.csproj path=c:\inetpub\wwwroot\b\b.csproj/ /webmap /solution Outputdir(optional): The name of the path where output DLLs and EXEs will be placed. This overrides settings from the project file. excludeprojects (fileset) (optional): Projects that will not be built. I added this because when building from a solution it does not honor the Build|Configuration Manager settings for the configuration. I checked the .csproj and .sln files for these settings but they aren't there. I guess they are buried in the .suo or .user files. Anyway, my project has a bunch of sample applications that we only want to build as part of the release and this was a handy way to set it all up. Per my email exchange with Ian, I have cleaned up my braces and changed tabs into 4 spaces. Note that the existing files did not follow the naming conventions so I cleaned up a bit of original code too (put braces on the same line as the opening keyword, got rid of explicit private declarations for member variables etc.). I'm pretty sure I caught all the ones I had in my original patch attempt. I have also eliminated the upcasts of _nanttask to SolutionTask; instead I pass the parameters of the solution task down the line as needed. This certainly makes the Solution, Project and related classes more general and possibly more reusable. Please notify me if the patch cannot be applied. We are currently having some trouble with the resource generation and how it works in some cases. As best we can tell, sometimes the resource names end up with double dots. Anyway, I want to take a look at this as soon as possible but am hesitant to do so until I am sure I am adhering to the proper standards so my code changes can make it into the official source. The bottom line here is I really don't want to maintain my own custom version of NAnt. The patch is copied inline below and is also attached as 20030813.txt. - TFC cvs diff (in directory C:\cvsroot\nant\nant\src\NAnt.VSNet\) ? Attributes ? Types cvs server: Diffing . Index: ConfigurationSettings.cs === RCS file: /cvsroot/nant/nant/src/NAnt.VSNet/ConfigurationSettings.cs,v retrieving revision 1.4 diff -r1.4 ConfigurationSettings.cs 30c30 public ConfigurationSettings( ProjectSettings ps, XmlElement elemConfig ) { --- public ConfigurationSettings( ProjectSettings ps, XmlElement elemConfig, Task nanttask, string outputDir ) { 32,33c32,43 _strRelOutputPath = elemConfig.Attributes[ OutputPath ].Value; _strOutputPath = new DirectoryInfo( ps.ProjectRootDirectory + @\ + elemConfig.Attributes[ OutputPath ].Value ).FullName; --- _nanttask = nanttask; if (outputDir == null || outputDir.Trim().Length == 0) { _strRelOutputPath
RE: [nant-dev] Patches applied? How do I get that version.
I agree with your points on the cast. My general approach is to try to keep the number of parameters passed as small as possible to reduce coupling. I certainly should not have cast without checking the type. I was also concerned about not changing things too much on my first try. Anyway, I'm guessing you would prefer me to pass the FileSet and other properties I need from the task to the classes as individual parameters. Is this the normal design pattern? I'll set VS.NET to convert the tabs to spaces and I'll move the braces to where the coding guidelines suggest (although my religion has always been braces under the if :-) ). Was there anything else that did not fit the guidelines? - TFC -Original Message- From: Ian MacLean [mailto:[EMAIL PROTECTED] Sent: Tuesday, August 12, 2003 10:50 PM To: Tom Cabanski Cc: [EMAIL PROTECTED] Tom, the diff you sent has tabs instead of spaces and incorrect brace positioning. Could you please read the coding guidelines at http://sourceforge.net/docman/display_doc.php?docid=6080group_id=31650 and re-submit. Another question I have is about the nantTask paramater passed in to the Solution class's constructor. In your patch you cast this to a SolutionTask instance and then use some properties from it. This works fine now because Solution is only ever instanciated from SolutionTask passing itself in the constructor. However in that case why is the paramater a Task instance instead of a SolutionTask insance ? Is there an intent to use the solution class from other tasks that require solution functionality ? With these changes Solution will break if somthing other than a SolutionTask is passed to the constructor. The same goes for ConfigurationSettings. maybe Matt can comment on the intended use of the _nanttask member. Ian A couple weeks ago I submitted a patch that added webmap to the solution task and fixed a couple of bugs including the issue in Resource.cs that made resource compilations failed. I just finished getting latest from the anonymous source forge and none of this has been applied. Should I be looking elsewhere? We identified another bug in the resource compilation of the solution task that I wanted to fix. Please advise. - TFC --- This SF.Net email sponsored by: Free pre-built ASP.NET sites including Data Reports, E-commerce, Portals, and Forums are available now. Download today and enter to win an XBOX or Visual Studio .NET. http://aspnet.click-url.com/go/psa0013ave/direct;at.aspnet_072303_01/01 ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
RE: [nant-dev] Contributing
I had your latest out of CVS as of Wednesday morning. The problem is that under some circumstances the delete would not run or would fail. The classic example I ran into was related to some read-only files that got to the temp directory; I would imagine this occurred because I was building from a source-controlled project and the source was not checked out (i.e. was read-only). My new code wraps things in a try...finally and fixes up read-only attributes before deleting. I will look at the webmap element thing this morning. Thanks - Tom Cabanski, President Objective Advantage, Inc. http://www.oai.cc Phone: +1-281-348-2517x15 -Original Message- From: Matthew Mastracci [mailto:[EMAIL PROTECTED] Sent: Thursday, July 31, 2003 12:35 AM To: Tom Cabanski Cc: [EMAIL PROTECTED] Awesome! Thanks for the fixes. Please see my notes inline. As John mentioned, use diff -u to provide a patch. We can get this stuff checked into CVS. On Wed, 2003-07-30 at 16:08, Tom Cabanski wrote: I've cleaned up a variety of little bugs in the solution task as follows: Leaks temp files under some circumstances. Fixed. This was fixed in the latest from CVS. I can check your patch to see if there were any places that I had missed. Define settings are not read from project file (e.g. TRACE;DEBUG). Fixed. Cool. Resource compiles blow up under some circumstances because of changes to the ResGen task. Fixed. I think some changes in the HEAD release had broken this part of the solution task. Thanks... I've also added a couple new features because the WebDAV thing was such a pain. The Solution task now includes the following attributes: webmap(optional): Would it be possible to provide webmap elements, rather than a file? This would be more NAnt-style if you could specify: solution webmap url=http://; path=.../ /solution Ian would likely know the best way to go about providing these elements. The name of a file that maps web project URLs to their physical file path. Each line in the file takes the form web project URLspacePhysical path to project. If this attribute is provided, WebDAV is not used for the mapped project(s). Outputdir(optional): The name of the path where output DLLs and EXEs will be placed. This overrides settings from the project file. Awesome... Does it still work with the up-to-date check? I think it should, but it might be something to try out. At some point I'll have to fix the task so that it doesn't copy *every* file from the reference .dll's directory (with the exception of project references, I guess). I've noticed that a lot of junk DLLs end up getting copied as part of a build process. excludeprojects (fileset) (optional): Projects that will not be built. I added this because when building from a solution it does not honor the Build|Configuration Manager settings for the configuration. I checked the .csproj and .sln files for these settings but they aren't there. I guess they are buried in the .suo or .user files. Anyway, my project has a bunc of sample applications that we only want to build as part of the release and this was a handy way to set it all up. Good addition... The build configurations are stored in the cryptic .sln file. I hadn't had a chance to parse those out (mostly because we found that VS.NET was corrupting them more often than not :)). My changes are restricted to the NAnt.VSNet project. How do I go about contributing all of this? Thanks - Tom Cabanski, President Objective Advantage, Inc. http://www.oai.cc Phone: +1-281-348-2517x15 -- Matthew Mastracci [EMAIL PROTECTED] --- This SF.Net email sponsored by: Free pre-built ASP.NET sites including Data Reports, E-commerce, Portals, and Forums are available now. Download today and enter to win an XBOX or Visual Studio .NET. http://aspnet.click-url.com/go/psa0013ave/direct;at.aspnet_072303_01/01 ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Patch for fixes and new features
I've attached the diff generated by WinCVS for the NAnt.VSNet folder. I have also pasted it below if that is better. I've also attached two new files, which I added to the proper folders under the project - WebMap.cs (types) and WebMapAttribute.cs (attributes). Per Matthew's suggestion, the webmap is now a tag in the solution. For example: solution ... webmap map url=http://localhost/a/a.csproj path=c:\inetpub\wwwroot\a\a.csproj/ map url=http://localhost/b/b.csproj path=c:\inetpub\wwwroot\b\b.csproj/ /webmap /solution Naturally, this supports any number of web projects in the solution. I know the project I am working on has two right now. Given that there are no tests, I'm not very certain that all of this will work in all scenarios. I have only really tested in a scenario where I am building from a solution and the build order and dependencies are coming from there. I have tested with and without my new optional features (webmap, outputdir, excludeprojects) with the solution scenario I understand well. Next week, I can spend a bit of time writing a couple of tests and learning more about the ins and outs of some of the other scenarios I suspect I do not understand as I write this. Thanks TFC cvs diff (in directory C:\cvsroot\nant\src\NAnt.VSNet\) ? Attributes ? Types ? _sgvault cvs server: Diffing . Index: ConfigurationSettings.cs === RCS file: /cvsroot/nant/nant/src/NAnt.VSNet/ConfigurationSettings.cs,v retrieving revision 1.4 diff -r1.4 ConfigurationSettings.cs 30c30 public ConfigurationSettings( ProjectSettings ps, XmlElement elemConfig ) { --- public ConfigurationSettings( ProjectSettings ps, XmlElement elemConfig, Task nanttask ) { 32,33c32,48 _strRelOutputPath = elemConfig.Attributes[ OutputPath ].Value; _strOutputPath = new DirectoryInfo( ps.ProjectRootDirectory + @\ + elemConfig.Attributes[ OutputPath ].Value ).FullName; --- _nanttask = nanttask; SolutionTask solutionTask = ((SolutionTask)_nanttask); if (solutionTask.OutputDir == null || solutionTask.OutputDir.Trim().Length == 0) { _strRelOutputPath = elemConfig.Attributes[ OutputPath ].Value; _strOutputPath = new DirectoryInfo( ps.ProjectRootDirectory + @\ + elemConfig.Attributes[ OutputPath ].Value ).FullName; } else { _strRelOutputPath = solutionTask.OutputDir; if (!_strRelOutputPath.EndsWith(@\)) { _strRelOutputPath = _strRelOutputPath + @\; } _strOutputPath = Path.GetFullPath(_strRelOutputPath); } 39,43c54,66 if ( ( elemConfig.Attributes[ DocumentationFile ] != null ) ( elemConfig.Attributes[ DocumentationFile ].Value.Length 0 )) { FileInfo fiDocumentation = new FileInfo( ps.ProjectRootDirectory + @/ + elemConfig.Attributes[ DocumentationFile ].Value ); _strDocFilename = fiDocumentation.FullName; _alSettings.Add( @/doc: + _strDocFilename + @ ); --- if ( ( elemConfig.Attributes[ DocumentationFile ] != null ) ( elemConfig.Attributes[ DocumentationFile ].Value.Length 0 )) { if (solutionTask.OutputDir == null || solutionTask.OutputDir.Trim().Length == 0) { FileInfo fiDocumentation = new FileInfo( ps.ProjectRootDirectory + @/ + elemConfig.Attributes[ DocumentationFile ].Value ); _strDocFilename = fiDocumentation.FullName; } else { _strDocFilename = Path.GetFullPath(Path.Combine(solutionTask.OutputDir, elemConfig.Attributes[ DocumentationFile ].Value)); } _alSettings.Add( @/doc: + _strDocFilename + @ ); 45,46c68,72 Directory.CreateDirectory( fiDocumentation.DirectoryName ); } --- Directory.CreateDirectory( Path.GetDirectoryName(_strDocFilename) ); } _nanttask.Log(Level.Debug, [solution] Project: {0} Relative Output Path: {1} Output Path: {2} Documentation Path: {3}, ps.Name, _strRelOutputPath, _strOutputPath, _strDocFilename); 52a79 htStringSettings[ DefineConstants ] =
RE: [nant-dev] Patch for fixes and new features
Good point on the strongly typed. I had a whole hour to get my revised WebMap done that done this morning before my real work day so I just took the cheap approach. Maybe I can look at it when I look at some of the other bits I'd like to next week. Then again, given that it is cleanly encapsulated by the WebMap class, I may leave it alone. - Tom Cabanski, President Objective Advantage, Inc. http://www.oai.cc Phone: +1-281-348-2517x15 -Original Message- From: Gert Driesen [mailto:[EMAIL PROTECTED] Sent: Thursday, July 31, 2003 12:18 PM To: Tom Cabanski Hi Tom, I would prefer using a strongly typed collection instead ...You can look at the (NAnt.DotNet.Tasks) AssemblyInfoTask (and the collections it uses) for examples. Great to have another active committer !! Gert - Original Message - From: Tom Cabanski [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Thursday, July 31, 2003 3:44 PM Subject: [nant-dev] Patch for fixes and new features I've attached the diff generated by WinCVS for the NAnt.VSNet folder. I have also pasted it below if that is better. I've also attached two new files, which I added to the proper folders under the project - WebMap.cs (types) and WebMapAttribute.cs (attributes). Per Matthew's suggestion, the webmap is now a tag in the solution. For example: solution ... webmap map url=http://localhost/a/a.csproj path=c:\inetpub\wwwroot\a\a.csproj/ map url=http://localhost/b/b.csproj path=c:\inetpub\wwwroot\b\b.csproj/ /webmap /solution Naturally, this supports any number of web projects in the solution. I know the project I am working on has two right now. Given that there are no tests, I'm not very certain that all of this will work in all scenarios. I have only really tested in a scenario where I am building from a solution and the build order and dependencies are coming from there. I have tested with and without my new optional features (webmap, outputdir, excludeprojects) with the solution scenario I understand well. Next week, I can spend a bit of time writing a couple of tests and learning more about the ins and outs of some of the other scenarios I suspect I do not understand as I write this. Thanks TFC cvs diff (in directory C:\cvsroot\nant\src\NAnt.VSNet\) ? Attributes ? Types ? _sgvault cvs server: Diffing . Index: ConfigurationSettings.cs === RCS file: /cvsroot/nant/nant/src/NAnt.VSNet/ConfigurationSettings.cs,v retrieving revision 1.4 diff -r1.4 ConfigurationSettings.cs 30c30 public ConfigurationSettings( ProjectSettings ps, XmlElement elemConfig ) { --- public ConfigurationSettings( ProjectSettings ps, XmlElement elemConfig, Task nanttask ) { 32,33c32,48 _strRelOutputPath = elemConfig.Attributes[ OutputPath ].Value; _strOutputPath = new DirectoryInfo( ps.ProjectRootDirectory + @\ + elemConfig.Attributes[ OutputPath ].Value ).FullName; --- _nanttask = nanttask; SolutionTask solutionTask = ((SolutionTask)_nanttask); if (solutionTask.OutputDir == null || solutionTask.OutputDir.Trim().Length == 0) { _strRelOutputPath = elemConfig.Attributes[ OutputPath ].Value; _strOutputPath = new DirectoryInfo( ps.ProjectRootDirectory + @\ + elemConfig.Attributes[ OutputPath ].Value ).FullName; } else { _strRelOutputPath = solutionTask.OutputDir; if (!_strRelOutputPath.EndsWith(@\)) { _strRelOutputPath = _strRelOutputPath + @\; } _strOutputPath = Path.GetFullPath(_strRelOutputPath); } 39,43c54,66 if ( ( elemConfig.Attributes[ DocumentationFile ] != null ) ( elemConfig.Attributes[ DocumentationFile ].Value.Length 0 )) { FileInfo fiDocumentation = new FileInfo( ps.ProjectRootDirectory + @/ + elemConfig.Attributes[ DocumentationFile ].Value ); _strDocFilename = fiDocumentation.FullName; _alSettings.Add( @/doc: + _strDocFilename + @ ); --- if ( ( elemConfig.Attributes[ DocumentationFile ] != null ) ( elemConfig.Attributes[ DocumentationFile ].Value.Length 0 )) { if (solutionTask.OutputDir == null || solutionTask.OutputDir.Trim().Length == 0) { FileInfo fiDocumentation = new FileInfo( ps.ProjectRootDirectory + @/ + elemConfig.Attributes[ DocumentationFile ].Value ); _strDocFilename = fiDocumentation.FullName; } else { _strDocFilename = Path.GetFullPath(Path.Combine(solutionTask.OutputDir, elemConfig.Attributes[ DocumentationFile ].Value)); } _alSettings.Add( @/doc: + _strDocFilename + @ ); 45,46c68,72 Directory.CreateDirectory( fiDocumentation.DirectoryName ); } --- Directory.CreateDirectory( Path.GetDirectoryName(_strDocFilename) ); } _nanttask.Log(Level.Debug, [solution] Project: {0} Relative Output Path: {1} Output Path: {2} Documentation Path: {3}, ps.Name, _strRelOutputPath, _strOutputPath, _strDocFilename); 52a79 htStringSettings
[nant-dev] Contributing
Ive cleaned up a variety of little bugs in the solution task as follows: Leaks temp files under some circumstances. Fixed. Define settings are not read from project file (e.g. TRACE;DEBUG). Fixed. Resource compiles blow up under some circumstances because of changes to the ResGen task. Fixed. Ive also added a couple new features because the WebDAV thing was such a pain. The Solution task now includes the following attributes: webmap(optional): The name of a file that maps web project URLs to their physical file path. Each line in the file takes the form web project URLspacePhysical path to project. If this attribute is provided, WebDAV is not used for the mapped project(s). Outputdir(optional): The name of the path where output DLLs and EXEs will be placed. This overrides settings from the project file. excludeprojects (fileset) (optional): Projects that will not be built. I added this because when building from a solution it does not honor the Build|Configuration Manager settings for the configuration. I checked the .csproj and .sln files for these settings but they arent there. I guess they are buried in the .suo or .user files. Anyway, my project has a bunc of sample applications that we only want to build as part of the release and this was a handy way to set it all up. My changes are restricted to the NAnt.VSNet project. How do I go about contributing all of this? Thanks - Tom Cabanski, President Objective Advantage, Inc. http://www.oai.cc Phone: +1-281-348-2517x15
[nant-dev] Contributing
Ive cleaned up a variety of little bugs in the solution task as follows: Leaks temp files under some circumstances. Fixed. Define settings are not read from project file (e.g. TRACE;DEBUG). Fixed. Resource compiles blow up under some circumstances because of changes to the ResGen task. Fixed. Ive also added a couple new features because the WebDAV thing was such a pain. The Solution task now includes the following attributes: webmap(optional): The name of a file that maps web project URLs to their physical file path. Each line in the file takes the form web project URLspacePhysical path to project. If this attribute is provided, WebDAV is not used for the mapped project(s). Outputdir(optional): The name of the path where output DLLs and EXEs will be placed. This overrides settings from the project file. excludeprojects (fileset) (optional): Projects that will not be built. I added this because when building from a solution it does not honor the Build|Configuration Manager settings for the configuration. I checked the .csproj and .sln files for these settings but they arent there. I guess they are buried in the .suo or .user files. Anyway, my project has a bunc of sample applications that we only want to build as part of the release and this was a handy way to set it all up. My changes are restricted to the NAnt.VSNet project. How do I go about contributing all of this? Thanks - Tom Cabanski, President Objective Advantage, Inc. http://www.oai.cc Phone: +1-281-348-2517x15