[nant-dev] NAnt pre- and post-build events within the solution task
What does everyone think of adding native NAnt pre- and post-build events to the solution task. These tasks would be independent of the existing project pre- and post-build events. Ideally, we would make the current pre- and post-build expansion macro variables available via properties: My suggestion is this, although we might need to add additional elements or properties to support triggers on successful/failed builds: solution configuration=release projects include name=A\A.csproj / include name=B\b.vbproj / include name=C\c.csproj / /projects referenceprojects include name=X\x.csproj / /referenceprojects beforeprojectbuild echoAbout to build project ${projectpath}/echo /beforeprojectbuild afterprojectbuild echoBuilt project ${projectpath}!/echo /afterprojectbuild /solution Or we could use a custom function available in the solution task to retrieve a macro: solution configuration=release projects include name=A\A.csproj / include name=B\b.vbproj / include name=C\c.csproj / /projects referenceprojects include name=X\x.csproj / /referenceprojects beforeprojectbuild echoAbout to build project ${solution::expand('ProjectPath')}/echo /beforeprojectbuild afterprojectbuild echoBuilt project ${solution::expand('ProjectPath')}!/echo /afterprojectbuild /solution Thoughts? Matt. --- This SF.Net email is sponsored by: NEC IT Guy Games. How far can you shotput a projector? How fast can you ride your desk chair down the office luge track? If you want to score the big prize, get to know the little guy. Play to win an NEC 61 plasma display: http://www.necitguy.com/?r=20 ___ nant-developers mailing list nant-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: latest nightly build
Taking a look at the build file for the tests, it looks like the MSNet tests DLL doesn't include any files but the ../../src/CommonAssemblyInfo.cs. It's possible that the fileset changes broke parent directory traversal. Gert Driesen wrote: Hi Martin, I'll look into that error later. For now, you can just use the binary distribution. If I recall correctly, the version should include the fileset performance improvements. My cable modem at home is f¨**cked up, so I won't be able to do much at home in the next few days :( Until its fixed, I (try to) leave for work at 6 AM (I normally leave at about 10 AM ... oops) so I have some time for responding to emails and stuff ... What a devotion ;-) Gert - Original Message - From: Martin Aliger [EMAIL PROTECTED] To: ! nant [EMAIL PROTECTED] Sent: Wednesday, October 27, 2004 10:56 AM Subject: [nant-dev] latest nightly build Hi all, I just grab latest (10-25) nighly and it's build failed due to lack of MSNet test-cases: [nant] E:\src\extern\nant\tests\NAnt.MSNet\NAnt.MSNet.build build Buildfile: file:///E:/src/extern/nant/tests/NAnt.MSNet/NAnt.MSNet.bu ild Target(s) specified: build build: [csc] Compiling 0 files to 'E:\src\extern\nant\build\net-1.1.w in32\nant-0.85-debug\bin\NAnt.MSNet.Tests.dll'. [csc] fatal error CS2008: No inputs specified BUILD FAILED E:\src\extern\nant\tests\NAnt.MSNet\NAnt.MSNet.build(11,10): External Program Failed: C:\WINDOWS\Microsoft.NET\Framework\v1.1.432 2\csc.exe (return code was 1) Total time: 0 seconds. BUILD FAILED Nested build failed. Refer to build log for exact reason. Total time: 10.5 seconds. Martin btw: is in this build already those performance changes? --- This SF.Net email is sponsored by: Sybase ASE Linux Express Edition - download now for FREE LinuxWorld Reader's Choice Award Winner for best database on Linux. http://ads.osdn.com/?ad_id=5588alloc_id=12065op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers --- This SF.Net email is sponsored by: Sybase ASE Linux Express Edition - download now for FREE LinuxWorld Reader's Choice Award Winner for best database on Linux. http://ads.osdn.com/?ad_idU88alloc_id065op=click --- This SF.Net email is sponsored by: Sybase ASE Linux Express Edition - download now for FREE LinuxWorld Reader's Choice Award Winner for best database on Linux. http://ads.osdn.com/?ad_idU88alloc_id065op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Major performance enhancements landed
With the help of Gert Dreisen, we've landed some major file-scanning performance changes. You'll find them in any nightly builds from today onward. I'm seeing major CPU usage drops as well as improvements in scanning many filesets. I can now run a full rebuild on an unchanged solution-task-based, 100-project solution in about 2 seconds. :) Some of the major changes include caching and compiling of regexes (avoiding re-creation of the same regex over and over), scanning only the regexes that apply to a given directory and various improvements to the regexes themselves. Give it a shot and make sure it works with your current projects. If you find something breaking, please try to reduce it to a managable testcase before reporting - stuff changes all the time and it may not be related to the regex changes. Ideally, your testcase should consist of a single task with a single fileset and a number of files to select from. Finally, if you are wondering why NAnt is behaving a certain way with your filesets, you can uncomment the DEBUG_REGEXES line in DirectoryScanner.cs to get a full dump of all directory scanning activity (extremely verbose). Matt. --- This SF.net email is sponsored by: IT Product Guide on ITManagersJournal Use IT products in your business? Tell us what you think of them. Give us Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more http://productguide.itmanagersjournal.com/guidepromo.tmpl ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: temp leekage
What sort of files are in that temp directory after NAnt completes? Nicklas Norling wrote: Hi. No, my system is not very slow. It's a P4 3(?) GHz with a HD doing 60-40 MB/s random read. I've tried it both with and without [EMAIL PROTECTED] running and it seemed to make no differance. I've had no extra load on the hard drive though. The hard drive was no where near full. I tried -verbose but ended up getting just successful builds then. But that might have been good fortune as it takes 10 minutes to run each test and I only tried it about 5 times. I'll try to run it more times and use -debug, thanks for the tip! I'll be using the new nightly then, no need to hunt down bugs you guys might have accidentially fixed already. /Nicke Gert Driesen wrote: Has anyone else ran into this issue ? Nicklas, is your system perhaps very slow ? Can you try running the build in debug mode (NAnt.exe -debug -logfile:log.txt), and send me a log of a failed build ? Can you check what's left in that directory after the build failure ? Thanks ! Gert - Original Message - From: Nicklas Norling [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, October 26, 2004 4:05 PM Subject: [nant-dev] temp leekage Hi. I've been a lazy boy running on nightly 03/24 for much too long. Decided to try out 10/25 today and a few days ago the newest nightly at that time. To my great sorrow there appears to have sneaked in a tricky bug where timing appears to be of essence. Due to the code I have is propritary I can not provide a repo, but I'll try to be as specific as I can anyway. I compile a project using the solution task in Nant nightly 10/25. The snipplet that compiles it is well tested. solution configuration=Debug solutionfile=${nant.project.basedir}\framework\FrameworkBuild.sln/ The solution itself contains 38 C# projects. This is the occational error output: [nant] C:\CodeModules\Montgomery\modules\fndwin\packages.build debug Buildfile: file:///C:/CodeModules/Montgomery/modules/fndwin/pack file:///C:/CodeModules/Montgomery/modules/fndwin/pack ages.build Target(s) specified: debug debug: [solution] Starting solution build. [solution] Building 'IFSVSAddInManager' [Debug] ... [solution] Building 'Ifs.Fnd.Data.CodeGen' [Debug] ... [solution] Building 'Ifs.Fnd.Feature.Design.Installer' [Debug] ... [resgen] Read in 0 resources from 'C:\CodeModules \Montgomery\modules\fndwin\framework\Design\Ifs.Fnd.Feature.Design.Installer \FeatureInstaller.resx' [resgen] Writing resource file... Done. BUILD FAILED Cannot delete directory 'C:\TEMP\tmp1966.tmp'. The directory is not empty. Total time: 3.2 seconds. BUILD FAILED Nested build failed. Refer to build log for exact reason. Total time: 3.4 seconds. This error message occurs only maybe one in 5-10 times that I compile. It's always complaining with the same type of error, but sometimes the directory's number is different, like tmp243.tmp etc. Looking at disk this folder is there in the temp folder. I can remove it without getting an error. I'm assuming somewhere between 03/24 and 10/25 someone did some change to the resgen part of the solution task that resulted in a non-deterministic order of deletion of files in the temp folder and the folder itself. Hence at times not all files are removed in time for when the folder is removed and it then gives this error. With this info is it possible to review the code part to find such a bug or can I do anything else to help reproduce this? /Nicke --- This SF.net email is sponsored by: IT Product Guide on ITManagersJournal Use IT products in your business? Tell us what you think of them. Give us Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more http://productguide.itmanagersjournal.com/guidepromo.tmpl --- This SF.Net email is sponsored by: Sybase ASE Linux Express Edition - download now for FREE LinuxWorld Reader's Choice Award Winner for best database on Linux. http://ads.osdn.com/?ad_id=5588alloc_id=12065op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] Re: temp leekage
Can you try running filemon while NAnt is going? Once you've got the error, filter your filemon output to include only the failing directory and reply with that. It should show us the file being deleted after the fact. Matt. Nicklas Norling wrote: There are no files in that directory after it's finished. Only the directory itself remains. /Nicke Matthew Mastracci wrote: What sort of files are in that temp directory after NAnt completes? Nicklas Norling wrote: Hi. No, my system is not very slow. It's a P4 3(?) GHz with a HD doing 60-40 MB/s random read. I've tried it both with and without [EMAIL PROTECTED] running and it seemed to make no differance. I've had no extra load on the hard drive though. The hard drive was no where near full. I tried -verbose but ended up getting just successful builds then. But that might have been good fortune as it takes 10 minutes to run each test and I only tried it about 5 times. I'll try to run it more times and use -debug, thanks for the tip! I'll be using the new nightly then, no need to hunt down bugs you guys might have accidentially fixed already. /Nicke Gert Driesen wrote: Has anyone else ran into this issue ? Nicklas, is your system perhaps very slow ? Can you try running the build in debug mode (NAnt.exe -debug -logfile:log.txt), and send me a log of a failed build ? Can you check what's left in that directory after the build failure ? Thanks ! Gert - Original Message - From: Nicklas Norling [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, October 26, 2004 4:05 PM Subject: [nant-dev] temp leekage Hi. I've been a lazy boy running on nightly 03/24 for much too long. Decided to try out 10/25 today and a few days ago the newest nightly at that time. To my great sorrow there appears to have sneaked in a tricky bug where timing appears to be of essence. Due to the code I have is propritary I can not provide a repo, but I'll try to be as specific as I can anyway. I compile a project using the solution task in Nant nightly 10/25. The snipplet that compiles it is well tested. solution configuration=Debug solutionfile=${nant.project.basedir}\framework\FrameworkBuild.sln/ The solution itself contains 38 C# projects. This is the occational error output: [nant] C:\CodeModules\Montgomery\modules\fndwin\packages.build debug Buildfile: file:///C:/CodeModules/Montgomery/modules/fndwin/pack file:///C:/CodeModules/Montgomery/modules/fndwin/pack ages.build Target(s) specified: debug debug: [solution] Starting solution build. [solution] Building 'IFSVSAddInManager' [Debug] ... [solution] Building 'Ifs.Fnd.Data.CodeGen' [Debug] ... [solution] Building 'Ifs.Fnd.Feature.Design.Installer' [Debug] ... [resgen] Read in 0 resources from 'C:\CodeModules \Montgomery\modules\fndwin\framework\Design\Ifs.Fnd.Feature.Design.Installer \FeatureInstaller.resx' [resgen] Writing resource file... Done. BUILD FAILED Cannot delete directory 'C:\TEMP\tmp1966.tmp'. The directory is not empty. Total time: 3.2 seconds. BUILD FAILED Nested build failed. Refer to build log for exact reason. Total time: 3.4 seconds. This error message occurs only maybe one in 5-10 times that I compile. It's always complaining with the same type of error, but sometimes the directory's number is different, like tmp243.tmp etc. Looking at disk this folder is there in the temp folder. I can remove it without getting an error. I'm assuming somewhere between 03/24 and 10/25 someone did some change to the resgen part of the solution task that resulted in a non-deterministic order of deletion of files in the temp folder and the folder itself. Hence at times not all files are removed in time for when the folder is removed and it then gives this error. With this info is it possible to review the code part to find such a bug or can I do anything else to help reproduce this? /Nicke --- This SF.Net email is sponsored by: Sybase ASE Linux Express Edition - download now for FREE LinuxWorld Reader's Choice Award Winner for best database on Linux. http://ads.osdn.com/?ad_id=5588alloc_id=12065op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: fileset/directoryscanner hang
I think we decided to just document this side-effect. My memory fails me here ... But if that is what we decided, then I guess we should indeed document it in both the filset doc and in the release notes .. Sounds fair. The reason for keeping this was that it was more consistent with patterns like foo/**/bar.cs. We can enhance the warning in DirectoryScanner.cs to recommend using either ** to match the base directory or */** to not match the base directory. I suppose we could even make that particular pattern an error. Not sure we should do this ... Since the pattern isn't optimal, I think a warning could be useful here. Ideally, you should choose one of the patterns above instead for maximum performance, rather than using the strange corner-case pattern itself. :) Matt. begin:vcard fn:Matthew Mastracci n:Mastracci;Matthew org:aclaro Softworks, inc. adr:;;1900 a - 11 St. SE;Calgary;Alberta;T2H 3G2;Canada email;internet:[EMAIL PROTECTED] title:Software Developer tel;work:(403) 299-6612 x-mozilla-html:FALSE url:http://www.aclaro.com version:2.1 end:vcard
Re: solution task GacCache / AppDomain construction (was : Re: Re: Re: [nant-dev] Bugs)
successfully. === At 2004-09-04, 12:48:26 you wrote: === Hi, This issue was fixed since the 0.84 release. Try using a recent nightly build of NAnt (http://nant.sourceforge.net/nightly/builds). Gert - Original Message - From: Jackfan [EMAIL PROTECTED] To: nant-developers [EMAIL PROTECTED] Sent: Friday, September 03, 2004 9:35 AM Subject: [nant-dev] Bugs Dear nant-developers: In my solution, there is one project that will include office.dll, excel.dll, vbide.dll, but nant can't find them, is this a bug? =Error= build: [solution] Starting solution build. BUILD FAILED INTERNAL ERROR System.ApplicationException: Couldn't find reference to type library 'Office' (T YPELIB\{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}\2.1\0\win32). at NAnt.VSNet.Reference.HandleWrapperImport(XmlElement elemReference) at NAnt.VSNet.Reference..ctor(Solution solution, ProjectSettings ps, XmlEleme nt elemReference, SolutionTask solutionTask, String outputDir) at NAnt.VSNet.Project.Load(Solution sln, String projectPath) at NAnt.VSNet.ProjectFactory.LoadProject(Solution sln, SolutionTask slnTask, TempFileCollection tfc, String outputDir, String path) at NAnt.VSNet.Solution.LoadProjects() at NAnt.VSNet.Solution..ctor(String solutionFileName, ArrayList additionalPro jects, ArrayList referenceProjects, TempFileCollection tfc, SolutionTask solutio nTask, WebMapCollection webMappings, FileSet excludesProjects, String outputDir) at NAnt.VSNet.Tasks.SolutionTask.ExecuteTask() at NAnt.Core.Task.Execute() at NAnt.Core.Target.Execute() at NAnt.Core.Project.Execute(String targetName, Boolean forceDependencies) at NAnt.Core.Project.Execute() at NAnt.Core.Project.Run() Please send bug report to [EMAIL PROTECTED] Total time: 2.9 seconds. My build file=== ?xml version=1.0? project name=idg default=build basedir=. property name=solution value=test.sln/ property name=config.debug value=DEBUG/ property name=config.release value=RELEASE/ property name=output.debug value=OutPut\Debug / property name=output.release value=Output\Release / target name=clean delete dir=${output.debug} verbose=true failonerror=false / delete dir=${output.release} verbose=true failonerror=false / /target target name=build solution solutionfile=${solution} outputdir=${output.debug} configuration=${config.debug}/ /target /project Your sincerely: Jackfan [EMAIL PROTECTED] 2004-09-03 --- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=5047alloc_id=10808op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers = = = = = = = = = = = = = = = = = = = = Your sincerely: Jackfan [EMAIL PROTECTED] 2004-09-04 = = = = = = = = = = = = = = = = = = = = Your sincerely: Jackfan [EMAIL PROTECTED] 2004-09-04 -- Matthew Mastracci [EMAIL PROTECTED] --- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=5047alloc_id=10808op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: solution task GacCache / AppDomain construction (was : Re: Re: Re: [nant-dev] Bugs)
Okay - I added code to recreate the AppDomain within the GacCache each time we do a project build. Even though it might not be necessary, it should ensure that we trim the fat by getting rid of all the stuff we loaded into the AppDomain during the project run. Since we keep the results of previous runs cached, this shouldn't have an appreciable impact on performance. Matt. On Sat, 2004-09-04 at 09:04, Gert Driesen wrote: - Original Message - From: Matthew Mastracci [EMAIL PROTECTED] To: Gert Driesen [EMAIL PROTECTED] Cc: Jackfan [EMAIL PROTECTED]; Nant-Developers (E-Mail) [EMAIL PROTECTED] Sent: Saturday, September 04, 2004 4:40 PM Subject: Re: solution task GacCache / AppDomain construction (was : Re: Re: Re: [nant-dev] Bugs) Matthew : the problem is that we use one GacCache for the complete run of the solution, so any assembly that is loaded will be locked for the entire run. That's why I initially created a new gaccache wherever we needed one, but you changed that for performance reasons ... I definitely have no problem with that, however I think its more important to have a functional solution task than to have slightly improved performance. There's definitely more performance to gain by optimizing the resource compilation (as mentioned in my email to the dev list a few days ago) The big reason I changed it was that if all references are set correctly, loading DLLs via the GacCache should work fine. Since we build a reference before we use it, this shouldn't be a problem. If I'm not mistaken, VS.NET won't let you build multiple projects to the same directory. It ends up keeping a lock on the referenced files, much as we do. Ideally, I would like to rebuild the GacCache only if absolutely necessary. It would be nice to test to see if the reference is already up-to-date in the target directory and, if so, forget about the copying step altogether. If the file has to be copied and the GacCache has it locked, we could then tear down and recreate the GacCache. The teardown step would probably not happen that often, since the same references would be copied over and over to the target output directory. I suppose an alternate method might be for us to enumerate the GAC assemblies via the appropriate Fusion API instead of doing a test load each time. Another method might be to recreate the GacCache each time, but copy the HashTable that determines whether the assembly is in the cache. This second alternate method sounds like it might be the best tradeoff for us. I suppose we could keep a single GacCache around, but recreate the AppDomain behind the scenes (being careful to maintain the cache itself). How does this sound? If you recreate the GacCache for each and every project, compilation for big projects slows down by a factor of 2x or 3x. This is unbelievably painful for 100+ project solutions. For now, we'll hold off on any changes I guess. Jackfan's problem might actually have been caused by another minor issue anyway. Gert -- Matthew Mastracci [EMAIL PROTECTED] --- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=5047alloc_id=10808op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: Two broken testcases - edge case question
Troy Laurin wrote: Matthew, The new behaviour more closely follows the documentation, and as you say this becomes consistent with handling of files... but any build files relying on the old behaviour will of course break. The fix is simple, to replace **/* with */**/*, but it may be hard to diagnose if/when upgrading breaks your build script... Yeah - it's tricky to determine if this is a problem or not. It's such a strange pattern to use (it only appeared in a testcase). A note on your previous email... 2. foo/**/*.cs was being converted to foo/(^\\.*)*/[^\\]*.cs This is now converted to foo/\\?.*[^\\]*.cs, also much faster. foo/(^\\.*)*/[^\\]*.cs Looking at the code for DirectoryScanner, how is it possible for this to be produced? On windows, I get foo(\\.*)*\\[^\\]*\.cs. From looking at the code, on unix/linux I would expect to get foo(/.*)*/[^/]*\.cs. The conversion result would then be foo.*/[^/]*\.cs, which appears to give exactly the same results. Note that my message here is out of sync with current CVS until I get it working. :) Also note that all my assertions were backed up by profiling/timing a test application with the given regexes. It's faster to scan for single characters, rather than a repeating group. I don't know how this is implemented internally, but profiling (and my suspicions initially) figured that it would be easier to scan using straight patterns rather than a pattern than requires nested pattern scanning (ie: the repeating group with negation). I'm curious that taking out the ^$ anchors speeds up the search, since there's an explicit comment in the DirectoryScanner source noting that they are added to improve the speed... and it makes sense that including them would reduce the amount of stringspace that would need to be examined by the regular expression... then again, I haven't tried comparing the speed of each regular expression, so I'm happy to accept that my understanding might be flawed :-) If you are searching for an entire string, anchoring is faster. For instance, if you are searching for blah foo bar in the string blah foo bar, anchoring will be the fastest way to find it. It turns out to be slower to search for this pattern: $.*blah foo bar.*^ than for this pattern: blah foo bar I'm only removing anchors if they conflict with wildcards, since the regex engine can terminate early in the latter pattern, while it needs to scan to the end of the string in the former. A couple of extra comments on DirectoryScanner... Both the ToRegexPattern and ParseSearchDirectoryAndPattern methods perform slash replacement. ToRegexPattern is private, and only called from ParseSearchDirectoryAndPattern, so should be able to assume that slashes are already replaced. Sounds good to me. I'll have to take a look to see if I can remove the extra replacement. Just being picky, but shouldn't 'if (s.Length == 2 s[1] == Path.VolumeSeparatorChar) {' be 'if (s.EndsWith(Path.VolumeSeparatorChar)) {'? This allows for platforms that support named volumes, as well as just drive letters. Not that there are any platforms like this around any more :-) Seeing as how Path.VolumeSeparatorChar is a char, our current comparison will support all possible return values. ;) Thanks for the note, Matt. Regards, -- Troy -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Matthew Mastracci Sent: Thursday, 8 July 2004 5:34 AM To: Nant-Developers (E-mail) Subject: [nant-dev] Two broken testcases - edge case question It looks like the regex optimization broke an edge case: **/* now matches the base directory, as well as any subdirectories on a FileSet.DirectoryNames call. For instance, in the following directory structure, all three will be matched with a base directory of C:\foo: C:\foo C:\foo\bar C:\foo\baz The old behaviour would only match the two subdirectories. Is this behaviour important to anyone? This is actually more consistent, considering that: file/**/*.cs matches: file/bar.cs file/foo/bar.cs file/foo/foo/bar.cs **/ can basically be considered to be current directory or subdirectories. Matt. --- This SF.Net email sponsored by Black Hat Briefings Training. Attend Black Hat Briefings Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers Disclaimer Message: This message contains confidential information and is intended only for the individual(s) named. If you are not the named addressee you should not disseminate, distribute or copy this e-mail. Please immediately delete it and all copies of it from your system, destroy any hard copies of it, and notify the sender. E-mail transmission cannot be guaranteed
Re: Fw: [nant-dev] current cvs build failure
Managed to reproduce this issue by building on a different drive with the path "Z:\cvs\nant\..." Looks like the "**/CVS/**" pattern is matching the \cvs\ bit in the pathname. There's an implicit rule in NAnt that the include/exclude patterns only apply to the part of the path added after the base directory. The old (and currently correct) behavior is to test the pattern appended to the root path: ^Z:\cvs\nant\(some wildcard pattern)$ The new behaviour optimized this to just (some wildcard pattern) Of course, this new behaviour will break anything under a "cvs/" directory. What should happen in this following case with the implicit "**/CVS/**" rule? Is this even valid? fileset basedir="C:\extra-build" includes name="C:\cvs\nant\**\*.cs" / includes name="*.cs" / /fileset Matt. Gert Driesen wrote: ----- Original Message - From: "Ian MacLean" [EMAIL PROTECTED] To: "Matthew Mastracci" [EMAIL PROTECTED] Cc: "Gert Driesen" [EMAIL PROTECTED] Sent: Friday, July 09, 2004 4:12 AM Subject: Re: Fw: [nant-dev] current cvs build failure Matthew Mastracci wrote: Strange - I had the same issue while I was developing (turned out that the DirectoryScanner was busted), but the fix for that was checked in. Where was the fix ? Maybe its manifesting itself in another way on my machine setup I can reproduce it here too. For now, I've reverted DirectoryScanner.cs back to 1.33. Gert begin:vcard fn:Matthew Mastracci n:Mastracci;Matthew org:aclaro Softworks, inc. adr:;;1900 a - 11 St. SE;Calgary;Alberta;T2H 3G2;Canada email;internet:[EMAIL PROTECTED] title:Software Developer tel;work:(403) 299-6612 x-mozilla-html:FALSE url:http://www.aclaro.com version:2.1 end:vcard
Re: Fw: [nant-dev] current cvs build failure
After short consideration, I suppose the following rules apply (and should be documented): If a pattern is not rooted, it implicitly applies only to files and directories gathered from non-rooted include patterns and only to the segment of the path after the base directory segment. For instance, if the base directory is "C:\cvs\foo\bar\" and the pattern is "**/CVS/**", the pattern will only be tested against the filenames relative to the C:\cvs\foo\bar directory. C:\cvs\foo\bar\xxx\x.cs will be tested as "xxx\x.cs" against the pattern ".*/CVS/.*". Note that the this rule will disable "**/CVS/**" checking in absolutely-specified paths (do we allow check this now?). One question: how do patterns specified using ".." work? * Note: "frompath" patterns could be a special case of the above where the base directory is set to each of the path elements and searched as above. If a pattern is rooted, it is tested against the entire path string. If the full pattern path happens to correspond to the base directory, it may apply to files beneath the base directory. We should probably document the "defaultincludes" boolean flag as well. ;) Matthew Mastracci wrote: Managed to reproduce this issue by building on a different drive with the path "Z:\cvs\nant\..." Looks like the "**/CVS/**" pattern is matching the \cvs\ bit in the pathname. There's an implicit rule in NAnt that the include/exclude patterns only apply to the part of the path added after the base directory. The old (and currently correct) behavior is to test the pattern appended to the root path: ^Z:\cvs\nant\(some wildcard pattern)$ The new behaviour optimized this to just (some wildcard pattern) Of course, this new behaviour will break anything under a "cvs/" directory. What should happen in this following case with the implicit "**/CVS/**" rule? Is this even valid? fileset basedir="C:\extra-build" includes name="C:\cvs\nant\**\*.cs" / includes name="*.cs" / /fileset Matt. Gert Driesen wrote: - Original Message - From: "Ian MacLean" [EMAIL PROTECTED] To: "Matthew Mastracci" [EMAIL PROTECTED] Cc: "Gert Driesen" [EMAIL PROTECTED] Sent: Friday, July 09, 2004 4:12 AM Subject: Re: Fw: [nant-dev] current cvs build failure Matthew Mastracci wrote: Strange - I had the same issue while I was developing (turned out that the DirectoryScanner was busted), but the fix for that was checked in. Where was the fix ? Maybe its manifesting itself in another way on my machine setup I can reproduce it here too. For now, I've reverted DirectoryScanner.cs back to 1.33. Gert begin:vcard fn:Matthew Mastracci n:Mastracci;Matthew org:aclaro Softworks, inc. adr:;;1900 a - 11 St. SE;Calgary;Alberta;T2H 3G2;Canada email;internet:[EMAIL PROTECTED] title:Software Developer tel;work:(403) 299-6612 x-mozilla-html:FALSE url:http://www.aclaro.com version:2.1 end:vcard
Re: Fw: [nant-dev] current cvs build failure
On Thu, 2004-07-08 at 20:12, Ian MacLean wrote: Matthew Mastracci wrote: Strange - I had the same issue while I was developing (turned out that the DirectoryScanner was busted), but the fix for that was checked in. Where was the fix ? Maybe its manifesting itself in another way on my machine setup It was one of my interim builds that was failing in that way before I had finished the implementation. Basically, the test patterns weren't matching the task DLLs as they should. I took a look at what might be going wrong. I assume that the *Tasks.dll pattern is no longer matching the correct task DLLs for some reason. Could you uncomment the DEBUG_REGEXES line in DirectoryScanner.cs and send the output just before it fails? It might give more insight into what is happening. I only have the 1.1 SDK installed on this box - I don't know if it's framework-specific. I'll be going out of town tomorrow morning - we can always revert DirectoryScanner.cs and I can fix it when I get back. Matt. I just ran my local tests and everything seems to be running just fine. Can you grab another checkout to verify that you got my latest changes? I'm a little puzzled to why this might be happening. did a fresh checkout which didn't update any files ( ie yesterdays sync was the latest code ) and I'm still seeing it. If I revert DirectoryScanner.cs back to an older version and rebuild it works. My command-line is: bin\nant debug set-net-1.1-framework-configuration test it fails with that or just a bin\nant. Is anyone else seeing this failure ? Ian On Thu, 2004-07-08 at 12:00, Gert Driesen wrote: Matthew, Can you please have a look at this issue ? Thanks ! Gert - Original Message - From: Gert Driesen [EMAIL PROTECTED] To: Ian MacLean [EMAIL PROTECTED]; Nant-Developers (E-mail) [EMAIL PROTECTED] Sent: Thursday, July 08, 2004 8:15 AM Subject: Re: [nant-dev] current cvs build failure - Original Message - From: Ian MacLean [EMAIL PROTECTED] To: Nant-Developers (E-mail) [EMAIL PROTECTED] Sent: Thursday, July 08, 2004 5:28 AM Subject: [nant-dev] current cvs build failure A fresh cvs checkout of nant is failing with the following : 2 [echo] Running unit tests with just built version of NAnt. [exec] H:\cvs\nant-test\nant/build/net-1.1.win32/nant-0.85-debug/bin/NAnt.exe -buildfile:NAnt.build debug self-test -D:proje ct.version=0.85 -targetframework:net-1.1 NAnt 0.85 (Build 0.85.1650.0; net-1.1.win32; nightly; 7/8/2004) Copyright (C) 2001-2004 Gerry Shaw NAnt Team BUILD FAILED For more information regarding the cause of the build failure, run the build again in debug mode. Try 'nant -help' for more information The current runtime framework 'net-1.1' is not correctly configured in the NAnt configuration file. Invalid element readregistry. Unknown task or datatype. BUILD FAILED H:\cvs\nant-test\nant\NAnt.build(160,10): External Program Failed: H:\cvs\nant-test\nant/build/net-1.1.win32/nant-0.85-debug/bin/NAnt.exe (return code was 1) This is new since yesterday - Does anyone who checked in code in the last day have an idea ? I think there's an issue with the DirectoryScanner changes that Matthew committed yesterday. Matthew, can you have a look at this (possibly write some more unit tests, so we don't have any regression on this in the future) ? Thanks, Gert -- Matthew Mastracci [EMAIL PROTECTED] --- This SF.Net email sponsored by Black Hat Briefings Training. Attend Black Hat Briefings Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Some profiling hot-spots to optimize
Here's a few hot-spots that someone could probably pick off pretty easy. All percentages are relative to total time. This is from running a solution task based build. I haven't tried a csc-based build yet. ProjectSettingsLoader::ProcessPlatform - 5.6% +- ProjectSettingsLoader::ProcessFrameworks - 2% - Combine the filesets for task scanning to reduce overhead. GacCache::IsAssemblyInGac - 3.66% (remoting overhead) - Find a way to communicate more efficiently between main and remote AppDomain. CultureInfo::get_CurrentCulture - 1658074 calls, 8.34% - Find a way for the regexes not to get the current culture repeatedly. NAnt.VSNet.ProjectFactory::LoadProjectXml() - 15% - Find a more efficient way to load the project Xml. AppDomain::Unload() - 11.92% - Called from GacCache::Dispose() to get rid of AppDomain - Unload AppDomains asynchronously? Matt. --- This SF.Net email sponsored by Black Hat Briefings Training. Attend Black Hat Briefings Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: Fileset scanning speed-ups in CVS
Okay, compiling all regexes makes the Regex.Test() contribution now 30% of the total runtime, versus 60% before. :) Surprisingly, the compilation of the regexes seems to be negligible (something I didn't expect). Checked-in. Next, I optimized some of our common regexes: 1. **/blah/** was being converted to ^rootpath.*/blah/.*.$ This has been optimized now to the functionally equivalent and much faster /blah/. Note that the root path and start/end line markers are no longer used. The root path optimization should be valid, since we only include directories that would be matched by the pattern anyways. If you can think of a pattern that violates this, please create a unit test in DirectoryScannerTest and I can fix it. 2. foo/**/*.cs was being converted to foo/(^\\.*)*/[^\\]*.cs This is now converted to foo/\\?.*[^\\]*.cs, also much faster. Regex comparisons are now 3% of the total runtime of NAnt during my test build - effectively dwarfed by most other operations. Matt. Matthew Mastracci wrote: Just as an extra note- Before the change, there were 13 regex comparisons in one of our projects. The change reduces this to 128000 string comparisons (taking less than 1% of the time) and 2000 regex comparisons (taking the remaining 60% of the time). Note that all numbers are approximate from profiling- you can use nprof to get some of your own if you wish. I'm considering adding regex compilation to the mix, avoiding some of the Regex.Match overhead (since the regexes should only be compiled once for a single build file). I'm not certain if the overhead of compiling regexes would overwhelm the savings, but I'm more confident now that the majority of generated regular expressions (ie: filesets passed to subtasks) are now simple regular expressions. The remaining regular expressions are likely the ones passed by the build file author themselves, along with some of the built-in ones like **/CVS/**, etc. If we cache the compiled Matt. Matthew Mastracci wrote: I just checked in a change to fileset scanning that eliminates a large chunk of time (checked via profiling) during many of the common NAnt operations. One of the biggest losers on the profiling run was Regex.Match(), called many, many times during a build. The new code replaces a good proportion of these with CompareInfo.Compare() calls, reducing the overhead dramatically. Instead of converting all fileset includes to regexes, the new code will only convert those that actually contain wildcards. Matt. --- This SF.Net email sponsored by Black Hat Briefings Training. Attend Black Hat Briefings Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com --- This SF.Net email sponsored by Black Hat Briefings Training. Attend Black Hat Briefings Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com --- This SF.Net email sponsored by Black Hat Briefings Training. Attend Black Hat Briefings Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Two broken testcases - edge case question
It looks like the regex optimization broke an edge case: **/* now matches the base directory, as well as any subdirectories on a FileSet.DirectoryNames call. For instance, in the following directory structure, all three will be matched with a base directory of C:\foo: C:\foo C:\foo\bar C:\foo\baz The old behaviour would only match the two subdirectories. Is this behaviour important to anyone? This is actually more consistent, considering that: file/**/*.cs matches: file/bar.cs file/foo/bar.cs file/foo/foo/bar.cs **/ can basically be considered to be current directory or subdirectories. Matt. --- This SF.Net email sponsored by Black Hat Briefings Training. Attend Black Hat Briefings Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] Re: ResGen assembly references?
Can anyone give me a hint on how to create these assembly references in 1.0/1.1 via VS.NET? I haven't seen them before. Gert Driesen wrote: - Original Message - From: Ian MacLean [EMAIL PROTECTED] To: Gert Driesen [EMAIL PROTECTED] Cc: Matthew Mastracci [EMAIL PROTECTED]; Nant-Developers (E-Mail) [EMAIL PROTECTED] Sent: Tuesday, July 06, 2004 8:25 AM Subject: Re: [nant-dev] Re: ResGen assembly references? Gert Driesen wrote: - Original Message - From: Matthew Mastracci [EMAIL PROTECTED] To: Matthew Mastracci [EMAIL PROTECTED] Cc: Gert Driesen [EMAIL PROTECTED] Sent: Tuesday, July 06, 2004 3:13 AM Subject: Re: ResGen assembly references? Matthew Mastracci wrote: After upgrading to the latest CVS version, I've found that the resgen task is taking a long time to run for each project because it seems to be copying all of the project references. These are necessary, as resx files can contain references to types in the project references. So resgen need to be able to instantiate these types. What's the reason for this behaviour? We've never needed it before and it increases our build time dramatically. I don't think the 1.0 or 1.1 resgen tasks can even utilize assembly references. We didn't need it as we didn't implement this yet. The resgen.exe tool for the .NET 1.0 and .NET 1.1 does not provide direct support for assembly references, but you can trick it into the by copying the tool itself, and all assembly references to the same (temporary) directory, and launching the tool from there. This is what we do for .NET 1.0 and .NET 1.1. For .NET 2.0 we just specify the assembly references on the command line. Can't we do a quick parse of the resx sources to see if they require those references ? A large number of cases do not require any references at all. Yeah we probably could ... Just didn't/don't have time for that, and didn't see much need for it at that point ... I'm working on cutting down the time for a solution build in our shop again (via profiling)- this is one of the biggest culprits right now. :) I understand, but we can't sacrifice features for performance. But on the other hand we shouldn't slow down *every* solution based build in order to satisfy some corner cases if we can avoid doing so. No ofcourse not, if we can combine performance and features, I'm all for it ;-) Gert begin:vcard fn:Matthew Mastracci n:Mastracci;Matthew org:aclaro Softworks, inc. adr:;;1900 a - 11 St. SE;Calgary;Alberta;T2H 3G2;Canada email;internet:[EMAIL PROTECTED] title:Software Developer tel;work:(403) 299-6612 x-mozilla-html:FALSE url:http://www.aclaro.com version:2.1 end:vcard
[nant-dev] Re: [nant-commits] CVS: nant/src/NAnt.Console NAnt.Console.exe.config,1.58,1.59
Gert Driesen wrote: Matthew, The .NET 1.1 lc.exe indeed has a command line switch for specifying assembly references, but it doesn't work. That's why we don't use it. Actually, it does and I have proof. :) The only thing is that you can't specify assemblies that exist in the GAC (it gives you various errors from having the same key twice in a hashtable). Basically, it works for me and I can see exactly why given the decompiled source. Using Reflector: handler1 = new ResolveEventHandler(LicenseCompiler.OnAssemblyResolve); AppDomain.CurrentDomain.AssemblyResolve += handler1; context1 = new DesigntimeLicenseContext(); and in OnAssemblyResolve ... foreach (string text2 in LicenseCompiler.assemblies) { assembly1 = Assembly.LoadFrom(text2); if (assembly1 == null) { return null; } text3 = assembly1.GetName().Name; LicenseCompiler.assemHash.Add(text3, assembly1); if (text3 != text1) { continue; } return assembly1; } ... Gert - Original Message - From: Matthew Mastracci [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, July 06, 2004 2:24 AM Subject: [nant-commits] CVS: nant/src/NAnt.Console NAnt.Console.exe.config,1.58,1.59 Update of /cvsroot/nant/nant/src/NAnt.Console In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8787 Modified Files: NAnt.Console.exe.config Log Message: lc.exe supports assembly references Index: NAnt.Console.exe.config === RCS file: /cvsroot/nant/nant/src/NAnt.Console/NAnt.Console.exe.config,v retrieving revision 1.58 retrieving revision 1.59 diff -C2 -d -r1.58 -r1.59 *** NAnt.Console.exe.config 5 Jul 2004 18:11:21 - 1.58 --- NAnt.Console.exe.config 6 Jul 2004 00:24:11 - 1.59 *** *** 153,156 --- 153,157 task name=license attribute name=exenamelc/attribute + attribute name=supportsassemblyreferencestrue/attribute /task task name=ilasm --- This SF.Net email sponsored by Black Hat Briefings Training. Attend Black Hat Briefings Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com ___ nant-commits mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-commits begin:vcard fn:Matthew Mastracci n:Mastracci;Matthew org:aclaro Softworks, inc. adr:;;1900 a - 11 St. SE;Calgary;Alberta;T2H 3G2;Canada email;internet:[EMAIL PROTECTED] title:Software Developer tel;work:(403) 299-6612 x-mozilla-html:FALSE url:http://www.aclaro.com version:2.1 end:vcard
[nant-dev] Re: ResGen assembly references?
Gert Driesen wrote: Can't we do a quick parse of the resx sources to see if they require those references ? A large number of cases do not require any references at all. Yeah we probably could ... Just didn't/don't have time for that, and didn't see much need for it at that point ... I had to comment it out here because it was taking up to ten seconds to compile each .resx file in the solution. BTW- could we just skip copying resources and compile the .resx files after we copy references? I'm assuming that VS.NET would be compiling the .resx file using only the Copy Local references anyways, so we wouldn't be doing anything differently. I'm working on cutting down the time for a solution build in our shop again (via profiling)- this is one of the biggest culprits right now. :) I understand, but we can't sacrifice features for performance. But on the other hand we shouldn't slow down *every* solution based build in order to satisfy some corner cases if we can avoid doing so. No ofcourse not, if we can combine performance and features, I'm all for it ;-) This is a really big performance drain for any build that uses references extensively. I'd say it's a good candidate for performance tuning. :) Matt. --- This SF.Net email sponsored by Black Hat Briefings Training. Attend Black Hat Briefings Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: [nant-commits] CVS: nant/src/NAnt.Console NAnt.Console.exe.config,1.58,1.59
You're right - it is braindead. It works if you only specify a single component to license, otherwise it fails. :( What I didn't realize is that it will try over and over to re-populate its hashtable, failing. This causes the assembly resolution to fail. Unfortunately, there isn't any way to call lc.exe multiple times. We should probably be documenting some of these quirks somewhere. I usually end up running into something that looks like a bug, but turns out to be by design. Matt. Matthew Mastracci wrote: Gert Driesen wrote: Matthew, The .NET 1.1 lc.exe indeed has a command line switch for specifying assembly references, but it doesn't work. That's why we don't use it. Actually, it does and I have proof. :) The only thing is that you can't specify assemblies that exist in the GAC (it gives you various errors from having the same key twice in a hashtable). Basically, it works for me and I can see exactly why given the decompiled source. Using Reflector: handler1 = new ResolveEventHandler(LicenseCompiler.OnAssemblyResolve); AppDomain.CurrentDomain.AssemblyResolve += handler1; context1 = new DesigntimeLicenseContext(); and in OnAssemblyResolve ... foreach (string text2 in LicenseCompiler.assemblies) { assembly1 = Assembly.LoadFrom(text2); if (assembly1 == null) { return null; } text3 = assembly1.GetName().Name; LicenseCompiler.assemHash.Add(text3, assembly1); if (text3 != text1) { continue; } return assembly1; } ... Gert - Original Message - From: Matthew Mastracci [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, July 06, 2004 2:24 AM Subject: [nant-commits] CVS: nant/src/NAnt.Console NAnt.Console.exe.config,1.58,1.59 Update of /cvsroot/nant/nant/src/NAnt.Console In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8787 Modified Files: NAnt.Console.exe.config Log Message: lc.exe supports assembly references Index: NAnt.Console.exe.config === RCS file: /cvsroot/nant/nant/src/NAnt.Console/NAnt.Console.exe.config,v retrieving revision 1.58 retrieving revision 1.59 diff -C2 -d -r1.58 -r1.59 *** NAnt.Console.exe.config 5 Jul 2004 18:11:21 - 1.58 --- NAnt.Console.exe.config 6 Jul 2004 00:24:11 - 1.59 *** *** 153,156 --- 153,157 task name=license attribute name=exenamelc/attribute + attribute name=supportsassemblyreferencestrue/attribute /task task name=ilasm --- This SF.Net email sponsored by Black Hat Briefings Training. Attend Black Hat Briefings Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com ___ nant-commits mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-commits --- This SF.Net email sponsored by Black Hat Briefings Training. Attend Black Hat Briefings Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Projects and current working directory
Something that changed in the last six months or so (perhaps longer?) is that the projects no longer set their working directory equal to the base directory of the project itself. I'm proposing the following patch to Project.cs to fix this. Since I don't know if anyone relies on the current, strange behaviour, I'm posting this here for discussion. I know that Project.GetFullPath() is supposed to handle this stuff, but I believe there might be a few cases within NAnt where it isn't handled properly (ie: paths are taken literally, rather than using Project.GetFullPath). I know my solution compiles take longer with this disabled, but I haven't yet determined what the problem is. --- Project.cs 24 May 2004 18:03:38 - 1.71 +++ Project.cs 5 Jul 2004 22:36:36 - @@ -882,8 +882,12 @@ public bool Run() { Exception error = null; DateTime startTime = DateTime.Now; +string oldDirectory = Directory.GetCurrentDirectory(); try { +// change to the base directory of the project before running anything +Directory.SetCurrentDirectory(BaseDirectory); + OnBuildStarted(this, new BuildEventArgs(this)); Log(Level.Info, Buildfile: {0}, BuildFileUri); @@ -917,6 +921,9 @@ // signal build failure return false; } finally { +// restore the old directory +Directory.SetCurrentDirectory(oldDirectory); + string endTarget; if (error == null) { --- This SF.Net email sponsored by Black Hat Briefings Training. Attend Black Hat Briefings Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Fileset scanning speed-ups in CVS
I just checked in a change to fileset scanning that eliminates a large chunk of time (checked via profiling) during many of the common NAnt operations. One of the biggest losers on the profiling run was Regex.Match(), called many, many times during a build. The new code replaces a good proportion of these with CompareInfo.Compare() calls, reducing the overhead dramatically. Instead of converting all fileset includes to regexes, the new code will only convert those that actually contain wildcards. Matt. --- This SF.Net email sponsored by Black Hat Briefings Training. Attend Black Hat Briefings Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] Fileset scanning speed-ups in CVS
Scott Hernandez wrote: Good work. That is one that needed to be optimized :) Do you have profiler stats/results on other most called, or time most spent in, functions? It would be good to list them so anyone out there could step up to challenge themselves with optimizing those functions. Just an idea... Unfortunately, I haven't hooked up the copy to clipboard functionality in nprof, so all I can provide is a screenshot. ;) I can probably summarize the trouble spots by hand- the NAnt-bootstrap build would be a good candidate. My goal right now is to catch the low-hanging fruit for a general solution build to match (or exceed) VS.NET's compilation speed wherever possible. Matt. - Original Message - From: Matthew Mastracci [EMAIL PROTECTED] I just checked in a change to fileset scanning that eliminates a large chunk of time (checked via profiling) during many of the common NAnt operations. One of the biggest losers on the profiling run was Regex.Match(), called many, many times during a build. The new code replaces a good proportion of these with CompareInfo.Compare() calls, reducing the overhead dramatically. Instead of converting all fileset includes to regexes, the new code will only convert those that actually contain wildcards. begin:vcard fn:Matthew Mastracci n:Mastracci;Matthew org:aclaro Softworks, inc. adr:;;1900 a - 11 St. SE;Calgary;Alberta;T2H 3G2;Canada email;internet:[EMAIL PROTECTED] title:Software Developer tel;work:(403) 299-6612 x-mozilla-html:FALSE url:http://www.aclaro.com version:2.1 end:vcard
[nant-dev] Re: Fileset scanning speed-ups in CVS
Just as an extra note- Before the change, there were 13 regex comparisons in one of our projects. The change reduces this to 128000 string comparisons (taking less than 1% of the time) and 2000 regex comparisons (taking the remaining 60% of the time). Note that all numbers are approximate from profiling- you can use nprof to get some of your own if you wish. I'm considering adding regex compilation to the mix, avoiding some of the Regex.Match overhead (since the regexes should only be compiled once for a single build file). I'm not certain if the overhead of compiling regexes would overwhelm the savings, but I'm more confident now that the majority of generated regular expressions (ie: filesets passed to subtasks) are now simple regular expressions. The remaining regular expressions are likely the ones passed by the build file author themselves, along with some of the built-in ones like **/CVS/**, etc. If we cache the compiled Matt. Matthew Mastracci wrote: I just checked in a change to fileset scanning that eliminates a large chunk of time (checked via profiling) during many of the common NAnt operations. One of the biggest losers on the profiling run was Regex.Match(), called many, many times during a build. The new code replaces a good proportion of these with CompareInfo.Compare() calls, reducing the overhead dramatically. Instead of converting all fileset includes to regexes, the new code will only convert those that actually contain wildcards. Matt. --- This SF.Net email sponsored by Black Hat Briefings Training. Attend Black Hat Briefings Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com --- This SF.Net email sponsored by Black Hat Briefings Training. Attend Black Hat Briefings Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] wix task for NAnt :)
or, when Microsoft went open-source. Looks like Microsoft has finally jumped on the true open source bandwagon with the release of WiX - an XML to MSI compiler. It's unfortunately not under a GPL-compatible license (preventing direct linking), but the command-line interface would work just fine for most purposes, I believe. An installer-builder (an alternative to NSIS) would certainly be a useful tool to help round-out the NAnt toolset. See here for more info: http://blogs.msdn.com/robmen Matt. --- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470alloc_id=3638op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] Re: Solution task fixes + speedups
Gert Driesen wrote: So anyways, I finally understand that you are correct - VS.NET does check AssemblyFolders before HintPath. IMHO this is a strange way to do things. VS.NET doesn't make it easy to easily reproduce a build between two machines, does it? No, definitely not. In my opinion, VS.NET should only use AssemblyFolders if the AssemblyFolderKey is set on the reference. I agree! :) Unfortunately, I need to build on a clean system that doesn't have any csproj.user files. Perhaps I'll just delete the AssemblyFolders key from the registry on the build machine. Kind of drastic, no ? Since the AssemblyFolder stuff doesn't take into account versioning (we use two different versions of the ComponentOne stuff and need both for a successful build), we need to be able to specify the exact version that we're linked against. C1 is an example of a 3rd party library that can't be upgraded from a specific version without *something* breaking. :) We also can't really check in the csproj.user file, since each developer has their own copy (it's not really meant to be checked in anyways). Do you have time to add support for the ReferencesPath attrribute to our reference resolving procedure ? Do you mean reading the csproj.user files? Sure. I suppose we should probably add in some debugging traces for reference resolution. It would make it easier to figure out why a DLL is getting picked up from the wrong place. I really would like to set up a small team of developers to focus on improving/refactoring the solution task, would you be interested ? Yep. Just let me know and I'll see if I can allocate a bit of time to help out. Matt. --- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470alloc_id=3638op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] CopyLocal - once and for all :)
It seems like our CopyLocal logic in the solution task doesn't seem to match VS.NET 2003. Did this change between 2002/2003? As far as I can see, if the CopyLocal flag is not specified in 2003, it should be treated as false. Does anyone know for sure what this is in 2002? Matt. --- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470alloc_id=3638op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] CopyLocal - once and for all :)
Gert Driesen wrote: Matthew, The CopyLocal behaviour depends on whether the assembly is a system assembly or not (and some other criteria too perhaps). I'm pretty sure the current implement matches the behaviour of VS.NET 2003, but I might be wrong ofcourse. Do you have a example of where the behaviour differs ? I wonder if this is the problem: in Reference.cs, _privateSpecified and _isPrivate are being used before they have actually been assigned in the constructor (for project refs and visual C++ projects references). The ternary operator logic is correct, but I think _copyLocal always ends up being true for project references due to this bug. I suppose the solution is to move the test up in the file. This will likely fix my issue. :) Matt. --- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470alloc_id=3638op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: NAnt pedantic mode
Gert Driesen wrote: You mean an attribute that didn't exist ? Properties that don't exist cause a build error already ... Yep - that's what I was thinking. But I agree that we should indeed have this mode (or just always run NAnt in this mode, what do you propose) ... In what cases should NAnt throw a build error : - a system property that no longer exist - an attribute/child element that is deprecated, and the IsError property of the ObsoleteAttribute is set to true - a task/type that is deprecated, and the IsError property of the ObsoleteAttribute is set to true - an attribute/child element that does not (or no longer) exist +1 on all four. AFAIK, 2 and 3 are already done. in what cases should NAnt output a warning (deprecated message) in the build log : - a system property that has been replaced/renamed (eg. replaced by a function), but the original property still exists. - an attribute/child element that is deprecated, and the IsError property of the ObsoleteAttribute is set to false - a task/type that is deprecated, and the IsError property of the ObsoleteAttribute is set to false +1 on all three here too. Please correct me wherever necessary and add items to these lists Looks good to me. The biggest issue I run into is renamed attributes. Renamed sub-elements could also end up being a bit of a problem. Should this be the default mode? I'm not sure about this one, but we would need a way to run in less-strict mode. Matt. --- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470alloc_id=3638op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] Re: Solution task fixes + speedups
I can absolutely, 100% guarantee that this is the case. I have a .csproj file with the following reference: Reference Name = C1.Win.C1FlexGrid AssemblyName = C1.Win.C1FlexGrid HintPath = ..\supportDlls\C1.Win.C1FlexGrid.dll / The DLL in the HintPath is of version 1.1.20024.78. When I compile with VS.NET, the DLL that ends up in the bin directory is version 1.1.20024.78. There is also an AssemblyFolder entry that looks like this: C1Studio = C:\Program Files\ComponentOne Studio.NET\bin In this directory is C1.Win.C1FlexGrid.dll version 2.1.20034.144. This is not the DLL we want to compile against. If you want to revert the ordering, please wrap the assembly folder stuff with a check for the AssemblyFolderKey = blah attribute of the reference. AFAIK, if this attribute is missing, VS.NET ***will not*** use the AssemblyFolders for resolution. Does this sound acceptable? It looks like with this logic, I should be able to compile my project (while keeping your resolution order intact). Gert Driesen wrote: Matthew, I looked into this again, and I'm pretty sure I'm right : The HintPath is definitely the last resort for VS.NET. So we should undo your change (unless you can send me a repro). The issue you encountered was probably due to the fact that we don't yet use the path list in the ReferencesPath attribute (of the Settings node) in the .user file (the project user options) to locate assemblies. (feel free to add support for this to the solution task :-)) Gert - Original Message - From: Matthew Mastracci [EMAIL PROTECTED] To: Gert Driesen [EMAIL PROTECTED] Cc: Nant-Developers (E-mail) [EMAIL PROTECTED] Sent: Tuesday, March 16, 2004 11:35 PM Subject: [nant-dev] Re: Solution task fixes + speedups Gert Driesen wrote: But you actually have two different assembly folders : you have the assembly folder that is referenced in your project file using the AssemblyFolderKey attribute of the Reference element, eg. ... and you have the rest of the AssemblyFolder registry keys. Perhaps VS.NET first checks the AssemblyFolderKey, then the HintPath and then the rest of the assembly folders. But I'm just guessing here. Aha... I don't have an AssemblyFolderKey attribute on my reference - it's a direct file reference. The AssemblyFolder check was still picking it up, however. Perhaps the order was correct as you had it, but we should skip the assembly folder check if that attribute is missing. Even if Microsoft describes it as a last resort, it's definitely not how VS.NET does it. I'll verify it tomorrow, and report it to MS if necessary Cool. Thanks! Matt. --- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470alloc_id=3638op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers --- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470alloc_id=3638op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] Re: Solution task fixes + speedups
Gert Driesen wrote: I can also guarantee 100% that VS.NET (2003) is only using the hintpath as a last resort ;) I've reverted the change in CVS. Thanks for the explanation :) Matt. --- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470alloc_id=3638op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Solution task fixes + speedups
I've spent a bit more time speeding up the solution task and fixing differences from VS.NET. Here's a short summary of what to expect with the latest CVS: 1. We only create one AppDomain per solution build and per project build. We were creating dozens of AppDomains per project build before. 2. GAC checks (IsAssemblyInGac) are now cached per solution build. This cuts 25% of the build time off alone. 3. The HintPath for a reference is now checked before the AssemblyFolders. VS.NET checks it this way and it can break a solution that wants to reference (using a direct assembly reference) a different version of an assembly than might have been installed in an AssemblyFolder path. Matt. --- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470alloc_id=3638op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: Change to call task makes upgrade difficult
James C. Papp wrote: This was also my rational of not just adding a flag to call/. The depends/ task is just a dynamic form of the target/ task's depends attribute..., in all other respect their ultimate functionality would be identical. The depends/ task was not meant to be used as a way to call targets, but (more accurately), to assert that a set of dependencies were meet or handled (if needed) before continuing. This is similar a little bit to .NET security with the way you can request certain privileges up front (as assembly metadata), or dynamically by asserting them within code. Heh... I just ran into the same problem you have. My workaround so far is to add the following attribute to all of my execute-once targets: unless=${target::has-executed(target::get-current-target())} I would love to have the depends/ task instead. :) Matt. --- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470alloc_id=3638op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] NAnt pedantic mode
I've run into a number of build-script bugs today that are related to NAnt task properties changing/disappearing/obsoleting/etc. What does everyone think of a command-line flag to put NAnt into pedantic mode? This would throw an error if any build task tried to use a property that didn't exist or was obsoleted. I would personally run in pedantic mode all the time. Ideas? Comments? Flames? :) Matt. --- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470alloc_id=3638op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] Re: Remove support for WebDAV from solution task ?
AFAIK, VS.NET uses front page extensions to talk to the webserver. I think I chose webdav when I first looked at it because it offers that as an alternative when it can't open the solution w/FPE. FPE seems to get around the permissions issue better than WebDAV does. They've probably got some good hacks in there to make sure the whole thing is painless. Unfortunately, front-page extensions are barely documented - I couldn't find a suitable reference to base an implementation off. This was all before the webmap element made this stuff less-than-useful, of course. :) The more I think about it, the more I am in favour of just trashing the WebDAV stuff. Does anyone *really* need to build a project on a remote webserver? If so, we can always provide a workaround by HTTP GETing the source and WebDAV putting the binaries, I suppose. Matt. On Mon, 2004-03-08 at 22:33, Gert Driesen wrote: Matthew, can you tell me what makes our WebDAV access to IIS so much more troublesome, than what VS.NET uses ? Thanks, Gert - Original Message - From: Matthew Mastracci [EMAIL PROTECTED] To: Nant-Developers (E-mail) [EMAIL PROTECTED]; [EMAIL PROTECTED] Sent: Tuesday, March 09, 2004 1:04 AM Subject: [nant-dev] Re: Remove support for WebDAV from solution task ? The latest stuff has the EnableWebDAV stuff to prevent it being used by default. It's been in there for a month or so and tells the user to either provide a webmap or set EnableWebDAV = true to make it work. -1 for removing it - if people want it, they can be pointed at documentation to set up the server properly. /// summary /// Allow the task to use WebDAV for retrieving/compiling the projects within solution. Use of /// see cref=WebMap / is preferred over WebDAV. The default is see langword=false /. /// /summary /// remarks /// paraWebDAV support requires permission changes to be made on your project server. These changes may affect /// the security of the server and should not be applied to a public installation./para /// paraConsult your web server or the NAnt Wiki documentation for more information./para /// /remarks [TaskAttribute(enablewebdav, Required = false)] [BooleanValidator()] public bool EnableWebDAV { get { return _enableWebDAV; } set { _enableWebDAV = value; } } Jaroslaw Kowalski wrote: Perhaps we could have a webdav-copy task instead that would be similar to copy but accept WebDAV sources/targets. +1 for the idea of removing WebDAV from the solution task. Jarek - Original Message - From: Erick Thompson [EMAIL PROTECTED] To: Gert Driesen [EMAIL PROTECTED]; NAnt Users Mailing List [EMAIL PROTECTED]; Nant-Developers (E-Mail) [EMAIL PROTECTED] Sent: Monday, March 08, 2004 11:47 PM Subject: RE: [nant-dev] Remove support for WebDAV from solution task ? I haven't used WebDAV, but if I could use it to distribute a website to a final server, it would be very very useful to me. At the moment, I have a manual FTP step is required to move a web project to the production server. Erick -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Gert Driesen Sent: Monday, March 08, 2004 2:36 PM To: NAnt Users Mailing List; Nant-Developers (E-Mail) Subject: [nant-dev] Remove support for WebDAV from solution task ? Hi, I'm just asking to get an idea of how many people actually use it, but how would you feel if we would remove WebDAV support from the solution task ? We've noticed that lots of people have problems configuring their webserver, in order to get the solution task working, so it might be better to remove support for WebDAV altogether. This would also allow us to simplify some of the code, and make the code easier to maintain. What do you think ? Gert --- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470alloc_id=3638op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers --- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id70alloc_id638opk ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: Wild targets/Current target
As a curiousity, wouldn't you be able to use a regular target and properties to define what to call? For instance, your gateway project can just do this: target name=process description=Builds recursively all subprojects foreach item=Folder property=foldername in items includes name=*/ excludes name=CVS/ /items /in do nant buildfile=${foldername}/default.build target=${project.config} ${operation}/ /do /foreach /target The master just needs to set the operation property before calling. I'm not certain these wildcard targets are necessary in this case. property name=operation value=build / nant buildfile=gateway.build target=process / etc... Giuseppe Greco wrote: Hi all, I've just completed the implementation of the stuff we discussed yesterday. Right now I'm out of office and I don't have CVS access due to proxy restrictions, so attached to this email you will find the modified files. I'll send you a patch tomorrow. The modified files are: NAnt.Core/Project.cs line81 added WildTarget const line 132 added _currentTarget field lines 410 - 416added CurrentTarget property lines 784 - 796replaced do-while statement lines 1415 - 1419added wild targets handling NAnt.Core/Functions/NAntFunctions.cs lines 83 - 98 added GetCurrentTarget functioin These modifications allow you to specify a wild target that is executed when the user specifies a target that does not exist in the current build file. Here's an example: project name=myProject default=build target name=build echo message=This is the build target./ /target target name=* echo message=This is the ${target::get-current-target()} target./ /target /project if you type nant hello from the command, you get the message This is the hello target. Furthermore, using the master-gateway-slave build file pattern is much easier (see my previous emails). Here below is another example. Let's start with the usual project: /myProject + default.build + /src + default.build + /Subproject + default.build + HelloWorld.cs the master build file (/myProject/default.build) looks like this: ?xml version=1.0? project name=myProject default=build target name=build description=Builds the current configuration nant buildfile=src/default.build target=${target::get-current-target()}/ /target target name=test description=Tests the current configuration nant buildfile=src/default.build target=${target::get-current-target()}/ /target target name=clean description=Deletes the current configuration nant buildfile=src/default.build target=${target::get-current-target()}/ /target /project ... and the gateway build file (/myProject/src/default.build) like this: ?xml version=1.0? project name=myProject default=* target name=* description=Builds recursively all subprojects foreach item=Folder property=foldername in items includes name=*/ excludes name=CVS/ /items /in do nant buildfile=${foldername}/default.build target=${project.config} ${target::get-current-target()}/ /do /foreach /target /project I don't report the slave build file (/myProject/src/Subproject/default.build) since it is like any other build file written till now. Wild targets allow you to write more compact build files and provide a standard way to handle unexpected targets. What do you think about that? j3d. Giuseppe Greco ::agamura:: phone: +41 (0)91 604 67 65 mobile: +41 (0)76 390 60 32 email: [EMAIL PROTECTED] web:www.agamura.com --- SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps Web services for Linux with a free DVD software kit from IBM. Click Now! http://ads.osdn.com/?ad_id=1356alloc_id=3438op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: Wild targets/Current target
Giuseppe Greco wrote: As a curiousity, wouldn't you be able to use a regular target and properties to define what to call? For instance, your gateway project can just do this: Yes, but this is exactly what I'm trying to avoid... When a master build file contains more than 3 or 4 targets to forward, you have to define lots of properties just to handle that. I think a wild target would be much more elegant. Furthermore, be able to define a wild target that is executed when the user specifies a target that does not exist in the current build file, would be handy... Of course, that's nothing vital, but... Sorry. :) I just noticed your first post, describing exactly what I put in my message here. I suppose it's good for allowing you to specify targets for your subprojects without having to know about them in your master build file. Would you be rewriting your master to use wildcards as well? Matt. --- SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps Web services for Linux with a free DVD software kit from IBM. Click Now! http://ads.osdn.com/?ad_id=1356alloc_id=3438op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: touch task bug
I've had a fix for this one locally for a while - just checked it in. Gert Driesen wrote: Matt, Can you please submit a bug report for this ? Thanks, Gert - Original Message - *From:* Steele, Matt mailto:[EMAIL PROTECTED] *To:* '[EMAIL PROTECTED]' mailto:'[EMAIL PROTECTED]' *Sent:* Tuesday, February 24, 2004 1:06 AM *Subject:* [nant-dev] touch task bug The touch task creates a file but does not release it. On line 163 of TouchTask.cs, it should probably assign the result of File.Create to a stream and then close the stream. Sorry, we had been using the touch task to create lock files, but then we couldn't delete them! --- SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps Web services for Linux with a free DVD software kit from IBM. Click Now! http://ads.osdn.com/?ad_id=1356alloc_id=3438op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] Re: touch task bug
Sure... shouldn't be too tough. I'll just create a testcase that runs the touch task twice in a row on the same file. Gert Driesen wrote: - Original Message - From: Matthew Mastracci [EMAIL PROTECTED] To: Gert Driesen [EMAIL PROTECTED]; Nant-Developers (E-mail) [EMAIL PROTECTED] Sent: Wednesday, February 25, 2004 9:11 PM Subject: [nant-dev] Re: touch task bug I've had a fix for this one locally for a while - just checked it in. Thanks, can you also add a testcase for this ? Gert --- SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps Web services for Linux with a free DVD software kit from IBM. Click Now! http://ads.osdn.com/?ad_id=1356alloc_id=3438op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Nightly task docs broken
Looks like the nightly task docs broke at some point- http://nant.sourceforge.net/nightly/help/ You don't have permission to access /nightly/help/index.html on this server. Permissions issue with SCP? Matt. --- The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA. http://www.eclipsecon.org/osdn ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: SolutionTask
Guids should be unique. The only way to get this is by copying a project and forgetting to change it. VS.NET doesn't warn you of this, but behaves badly in subtle ways. Ian MacLean wrote: Is this the right patch ? if it is possible to have two valid projects with an identical guid should we use a different key for the hash table - perhaps a combination of the guid and the projectname ? Ian Hi all, I found one very annoying feature/bug of solution task: Projects (.csproj) are loaded into hashtable regarding their guid. But if two projects with same guid are loaded, no error/warning is issued and one of those projects disappears! Such projects could be created by copying and renaming existing project into another file. Create new project with Visual Studio generate new guid, so propability to create existing guid is negligible. Small patch to is attached. It checks this key violation rule and throws BuildException when it found one. Regards, Martin --- The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA. http://www.eclipsecon.org/osdn --- The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA. http://www.eclipsecon.org/osdn ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: new xml type
For tasks (such as the solution task), what about having C# classes in NAnt that map to XML itself? They could appear as XML to xmlpeek/xmlpoke/xmlforeach, but would be backed by C# classes internally. This would make it far simpler to return values from tasks. Martin Aliger wrote: Hi all, I'm trying to develop new xml type. Right now I have some preliminary patch to enable script like this: xml id=x1 book author nameJohn/name surnameSmith/surname /author titleJohn Smith's life/title /book /xml target name=test xmlpeek refid=x1 xpath=book/author/name property=authorname/ echo message=${authorname}/ /target How you like it? I'm looking forward to your comments... What I want to do is something James and Ivan also proposed: add some way to return information from task back to script. I dont think that add resultproperty/outputproperty to exec task and other whateverproperties to other tasks is good way. What I want to do is add one general attribute (e.g. result) to all tasks. Result itself will be xml dom with potentionaly many values. exec task could for example have in it full commandline executed, result code, stdout, stderr and maybe even more things! So it could be written something like this: exec program=${csprojconv.dir}\Gordic.Develop.CsprojConverter.exe commandline=${foldername}\${folder}.csproj ${version} result=res1 / xmlpeek refid=res1 xpath=output/resultcode property=resultcode/ if test=${resultcode2} fail message=serious CsprojConverter error/ /if or even shorter when function for xmlpeek exists! Martin --- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278alloc_id=3371op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] [Fwd: [Nprof-developers] Re: solution task]
Original Message Subject: [Nprof-developers] Re: solution task Date: Tue, 06 Jan 2004 11:09:22 -0700 From: Matthew Mastracci [EMAIL PROTECTED] To: Martin Aliger [EMAIL PROTECTED], [EMAIL PROTECTED] References: [EMAIL PROTECTED] Sounds good to me too - just ensure that you've got compilerargs specified by language. There's a number of flags that are valid for a single compiler only. Martin Aliger wrote: Hi all ! 1/ Do you think, that now is good time to some cleaning and restructuring in solution task as we discussed earlier? I have some spare time and appetite to do that now! 2/ Also I would need (and like to) make some improvements to that task. What I need (and currently use not-commited patch) is need to custom arguments override like there: solution configuration=Release outputdir=${output.dir} includevsfolders=false showcommands=true projects includes name=${build.dir}/**/*.csproj/ /projects assemblyfolders includes name=${output.dir}/ includes name=${nunit.dir}/ includes name=${references.dir}/ /assemblyfolders compilerargs arg value=/codepage:1250/ /compilerargs /solution We previously discuss that as it will be nice to do that at solution level or at project level. Do you still like the idea? I could implement that if you agree with that... Regards, Martin --- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278alloc_id=3371op=click ___ Nprof-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nprof-developers --- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278alloc_id=3371op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: new xml type
I suppose my original message wasn't that clear. I'm not completely certain this idea is fully formed in my head either! ;) What I'm proposing is that the NAnt build script writer user would use the task outputs as if they were XML, but under the hood they would be fully-fledged C# classes. We all agree that the xml object type that Martin is suggesting would be used within any XML task within the build script as raw XML. It would fit snugly into the xmlpeek/xmlpoke/xmlforeach tasks. I'm proposing that we back these xml documents with fully-fledged C# objects in the NAnt backend. I hope that this would lead to long-term, schema/class-enforced XML communication of some sort between tasks. Each task could expect and produce certain kinds of wellformed data. Each xml input or output from an NAnt task would be mapped to an XmlSerializer-ready NAnt class, preferably backed by a true .xsd file somewhere within NAnt. This serialization would be automatic and handled by the NAnt core without task writer intervention (modulo some attribute decoration). If each xml object could tag along an associated schema, this would enforce the validity of the object during user manipulation of the XML object, allowing it to be re-imported into the NAnt world at some later date. Does this make sense? Scott Hernandez wrote: This sounds interesting but I'm not sure I follow. Can you explain a little more? The concept of inputs/outputs to tasks (when called from other tasks) and adding context info so tasks know about following task, and preceding tasks, sounds interesting. But I'm not sure how this ties in here. What would the user experience be? What would the syntax be? - Original Message - From: Matthew Mastracci [EMAIL PROTECTED] For tasks (such as the solution task), what about having C# classes in NAnt that map to XML itself? They could appear as XML to xmlpeek/xmlpoke/xmlforeach, but would be backed by C# classes internally. This would make it far simpler to return values from tasks. Martin Aliger wrote: Hi all, I'm trying to develop new xml type. Right now I have some preliminary patch to enable script like this: xml id=x1 book author nameJohn/name surnameSmith/surname /author titleJohn Smith's life/title /book /xml target name=test xmlpeek refid=x1 xpath=book/author/name property=authorname/ echo message=${authorname}/ /target How you like it? I'm looking forward to your comments... What I want to do is something James and Ivan also proposed: add some way to return information from task back to script. I dont think that add resultproperty/outputproperty to exec task and other whateverproperties to other tasks is good way. What I want to do is add one general attribute (e.g. result) to all tasks. Result itself will be xml dom with potentionaly many values. exec task could for example have in it full commandline executed, result code, stdout, stderr and maybe even more things! So it could be written something like this: exec program=${csprojconv.dir}\Gordic.Develop.CsprojConverter.exe commandline=${foldername}\${folder}.csproj ${version} result=res1 / xmlpeek refid=res1 xpath=output/resultcode property=resultcode/ if test=${resultcode2} fail message=serious CsprojConverter error/ /if or even shorter when function for xmlpeek exists! Martin --- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278alloc_id=3371op=click --- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278alloc_id=3371op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: solution task
I like the ability to customize any field within the project. Would it be more suitable to perform this modification using the xmlpeek/xmlpoke tasks outside of the solution task itself? Perhaps some sort of per-project handler subtask could work as well: solution ... projects ... /projects projecthandlers projecthandler execute=before match=**/*.csproj property=input.file xmlpoke file=${input.file} xpath=VisualStudioProject/CSHARP/Build/Settings/@DelaySign value=True / /projecthandler /projecthandlers /solution I love the ability to do per-project customization. The above would allow us to re-use some existing tasks (and perhaps perform more complex project manipulation!). How does this sound? Jaroslaw Kowalski wrote: Some time ago I proposed a syntax to allow the ultimate customization of solution task. It was something like: solution configuration=Release outputdir=${output.dir} includevsfolders=false showcommands=true projects includes name=${build.dir}/**/*.csproj/ /projects override project=*.csproj param name=VisualStudioProject/CSHARP/Build/Settings/@DelaySign value=True / override file=File1.cs param name=@BuildAction value=Compile / /override /override override project=**/Project1/*.csproj compiler-args/codepage:1250/compiler-args /override /solution Each override would be processed after the project is loaded into memory and it matches the project attribute. The algorithm would be: 1. For each param, find the XML node specified by name XPath attribute 2. Set the value of this node as specified in value attribute The idea is simple, yet allows for ultimate extensibility. Perhaps we might even think about adding / removing items specified by XPath. For parameters, that aren't there in the *.csproj file we'd have special tags, like compiler-args mentioned above. Applications: 1. To override some flag in all C# projects, you use: override project=**/*.csproj / 2. To override some flag in all VB projects, you use: override project=**/*.vbproj / 3. To override some flag in all VB projects, you use: override project=**/*.vcproj / 4. To exclude some file from compilation, use: override file=File1.cs param name=@BuildAction value=Content / /override What do you think ? Jarke - Original Message - From: Matthew Mastracci [EMAIL PROTECTED] To: Nant-Developers (E-mail) [EMAIL PROTECTED] Sent: Tuesday, January 06, 2004 7:27 PM Subject: [nant-dev] [Fwd: [Nprof-developers] Re: solution task] Original Message Subject: [Nprof-developers] Re: solution task Date: Tue, 06 Jan 2004 11:09:22 -0700 From: Matthew Mastracci [EMAIL PROTECTED] To: Martin Aliger [EMAIL PROTECTED], [EMAIL PROTECTED] References: [EMAIL PROTECTED] Sounds good to me too - just ensure that you've got compilerargs specified by language. There's a number of flags that are valid for a single compiler only. Martin Aliger wrote: Hi all ! 1/ Do you think, that now is good time to some cleaning and restructuring in solution task as we discussed earlier? I have some spare time and appetite to do that now! 2/ Also I would need (and like to) make some improvements to that task. What I need (and currently use not-commited patch) is need to custom arguments override like there: solution configuration=Release outputdir=${output.dir} includevsfolders=false showcommands=true projects includes name=${build.dir}/**/*.csproj/ /projects assemblyfolders includes name=${output.dir}/ includes name=${nunit.dir}/ includes name=${references.dir}/ /assemblyfolders compilerargs arg value=/codepage:1250/ /compilerargs /solution We previously discuss that as it will be nice to do that at solution level or at project level. Do you still like the idea? I could implement that if you agree with that... Regards, Martin --- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278alloc_id=3371op=click ___ Nprof-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nprof-developers --- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278alloc_id=3371op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers --- This SF.net email is sponsored by: IBM Linux Tutorials
[nant-dev] Re: Will there be a nAnt-0.84rc2 and final before the end of the year?
Gert - are we branched for 0.84? I have some minor checkins I'm itching to get in for the 0.85. I can also look at some solution cleanups over my vacation time in the next few weeks. Gert Driesen wrote: - Original Message - From: Scott Hernandez [EMAIL PROTECTED] To: Morris, Jason [EMAIL PROTECTED]; Nant-Developers (E-mail) [EMAIL PROTECTED] Sent: Friday, December 19, 2003 1:14 AM Subject: Re: [nant-dev] Will there be a nAnt-0.84rc2 and final before the end of the year? There will be a new RC in the next day or two (as I hear). The expression stuff will not make this release. I originally planned to release rc2 yesterday, but I was waiting on a more detailed bug report from a user to check whether a fix for that particular issue should be included in rc2, and I still haven't heard from him yet ... There are also some reports about our nunit2 task not working on a .NET 1.0-only system that are disturbing me ... I have to attend some festivities this weekend (read : drink lots of beer), and probable won't be able to release it before monday (and even then, I urgently have to do some christmas shopping, p) ... There's a slight chance that I might be able to release it on saturday morning, but don't get your hopes up ... But it is now in the cvs HEAD, meaning that it is slated for the next release. It still needs a lot of testing, but we hope to get a expression feature complete version soon after the current release (.84). Personally, I'd like to see a .85 release with expression support near the first of the year! I'll try to get NAnt 0.84 released by the end of next week, but a 0.85 release by the first of next year is not feasable I think ... Gert --- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278alloc_id=3371op=click --- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278alloc_id=3371op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: Adding XML support to foreach or new task
Scott Hernandez wrote: This sounds interesting. Maybe we would want to introduce some xpathselection elements to replace your property example. Properties in this example would probably be a little confusing to the user since it isn't really a regular property (the value is retrieved via xpath, not only via an expression). Agreed- it's much clearer in that case. I think that xmlpeek/xmlpoke/xmlforeach would be a powerful combination. Having an implicit XML context available to all three would also be great! xmlforeach id=configxml ... !-- skipping stuff -- do xmlpoke id=configxml xpath=@someattribute value=foo / /do /xmlforeach The foreach / stuff could probably be cleaned up - it's certainly a catch-all for various types of iteration. Perhaps we could split all the iteration tasks in some way. fileforeach / textforeach / regexforeach / etc... xmlforeach file= xpath= xmlselect propertyname= xpath=@attribute xmlselect propertyname= xpath=node xmlselect propertyname= xpath=text() xmlselect propertyname= xpath=child/@attribute do ... /do /xmlforeach It would be really cool if we make this work so that you could use the xmlpeek/ task to select from the open file (xmldocument). Then later when if/when we get referencable types (for example an xml file factory or something) we could just a little more efficient. It would be nice to use the implied context here to simplify things. ;) foreach / could also be updated but this probably falls out of the scope of that. This is pretty specialized, and will need to be very specific to xml. - Original Message - From: Matthew Mastracci [EMAIL PROTECTED] To: Nant-Developers (E-mail) [EMAIL PROTECTED] Sent: Thursday, December 18, 2003 12:25 PM Subject: [nant-dev] Adding XML support to foreach or new task I'm looking at adding XML iteration support for either the foreach task or perhaps a new, yet-unnamed task. I would like to be able to iterate over a file based on an XPath query, picking up each matching element or attribute in turn. foreach is the easiest place to add it, but it's not really a clean solution. A better way would be to model a new xmlforeach task on the existing xmlpeek/xmlpoke tasks like so: xmlforeach file=foo.xml xpath=/configuration/blahelement property name=someattribute value=@attribute / property name=someinnertext value=text() / do echo${someattribute}, ${someinnertext}/echo /do /xmlforeach How does this sound? --- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278alloc_id=3371op=click --- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278alloc_id=3371op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] basedir semantics change?
Has somebody modified the project basedir semantics? The latest CVS version isn't working correctly for me. It's acting as if the basedir attribute wasn't specified. I'll try to find out the date that it was busted, but I'm curious if anyone remembers changing anything to do with this. This is a CVS checkout+build from this morning. Last working was my last checkout a few weeks ago. Matt. --- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278alloc_id=3371op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] basedir changes
Well, with additional investigation, it appears that the problem is that something has broken the includesList element in my build file. My build files are structured like so: \build\scripts\nightly.build basedir=. \build\scripts\project1.build basedir=../.. It seems as if project1.build is ending up with the wrong current directory. It may be related to this change (ianm, NAntTask.cs): +try { +// change current directory to directory of the build file that +// will be run +Directory.SetCurrentDirectory(Path.GetDirectoryName( +Project.GetFullPath(BuildFileName))); +// run the given build +if (!project.Run()) { +throw new BuildException(Nested build failed. Refer to build log for exact reason.); +} +} finally { Can anyone confirm this? This is my regression test investigation: Nov 19. - works Nov 27. - works Nov 28. - works (some checkin) Dec 2. - failure Dec 9. - failure Matt. --- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278alloc_id=3371op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Basedir changes - possible problems
So it looks like the recent basedir changes have revealed a long-standing issue w.r.t. assumptions about the current directory. It turns out that there are a few places where the tasks assume that the project's base directory is the same as the current directory. The two big ones I've found are: 1. The includeList element of the fileset 2. The file loaded by foreach mode=line I don't know where else in NAnt these problems might exist. I've worked around it with this simple patch- should it be checked in? The correct solution right now is to wrap all filename references with Project.GetFullPath(), but would it be better to just change our current directory to the project's base directory for the duration of the project run? --- Project.cs 18 Dec 2003 18:22:33 - 1.61 +++ Project.cs 19 Dec 2003 22:06:37 - @@ -784,8 +784,12 @@ public bool Run() { Exception error = null; DateTime startTime = DateTime.Now; +string oldDirectory = Directory.GetCurrentDirectory(); try { +// change to the base directory of the project before running anything +Directory.SetCurrentDirectory(BaseDirectory); + OnBuildStarted(this, new BuildEventArgs(this)); Log(Level.Info, Buildfile: {0}, BuildFileUri); @@ -819,6 +823,9 @@ // signal build failure return false; } finally { +// restore the old directory +Directory.SetCurrentDirectory(oldDirectory); + string endTarget; if (error == null) { Matt. --- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278alloc_id=3371op=click ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] Re: project references problems in solution task
Looks pretty good to me. Do you notice an impact on compile speed? I can try patching my local copy of NAnt and running it through our build torture test - 90+ projects with all sorts of inter-project and 3rd-party references. :) I may not have time to do this until next week, however. Matt. Ivan Tarasov wrote: Hello Matthew, I've fixed the current implementation of Reference.cs in VSNet-tasks project. Now it creates new AppDomain in which it tries to resolve all assemblies which are referenced from the given assembly, which are located in the same directory. Recently, all assemblies in that directory were copied. I've tested it on our project (I was patching nightly build sources from 03.12.03) and it worked pretty well. Hope this part of code will be suitable for putting it before the 0.8.4 release (we are waiting impatiently for this release). Patch is attached (it was diff -C 3). MM (re-cc'ing the list) MM AppDomains allow you load/unload assemblies at will. The .NET runtime MM tends to exhibit some odd/unpredictable behaviour as you load assemblies MM with the same name, especially if they don't have strong names. You can MM end up with types no longer resolving as expected. By loading MM assemblies in the separate AppDomain, you side-step all of these issues. --- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: verbosity of some tasks
That would be cool. It would be nice to move the reference code into a common place (the csc and vbc tasks) to avoid code duplication. Matt. Gert Driesen wrote: - Original Message - From: Matthew Mastracci [EMAIL PROTECTED] To: Nant-Developers (E-mail) [EMAIL PROTECTED] Sent: Wednesday, December 03, 2003 9:44 PM Subject: [nant-dev] Re: verbosity of some tasks At some point I'd like to use the multiple .resx input of resgen.exe - it would be nice to swallow output if no errors occur and just output: [resgen] Transformed 5 .resx files The solution builds would be a lot easier to read. Perhaps I can compress all of the reference copy operations into a single task call as well. After the 0.84 release, we should focus some of our efforts on refactoring the solution task and have it use the compiler tasks instead... It would be great if you could participate in this effort, as you're the original author ... Gert --- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ --- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: verbosity of some tasks
Sorry! That was a think-o on my part. I meant resource code. Should have read: It would be nice to move the *resource* code into a ... Been a tough week ;) Matt. Gert Driesen wrote: - Original Message - From: Matthew Mastracci [EMAIL PROTECTED] To: Gert Driesen [EMAIL PROTECTED]; [EMAIL PROTECTED] Sent: Thursday, December 04, 2003 7:27 PM Subject: Re: verbosity of some tasks That would be cool. It would be nice to move the reference code into a common place (the csc and vbc tasks) to avoid code duplication. Not sure if we need this for the compiler tasks, as you should actually supply it with the assemblies that you want to reference ... I don't think these tasks should contain any logic for determining other dependencies, so there won't be any code duplication. Gert --- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] Re: project references problems in solution task
(re-cc'ing the list) AppDomains allow you load/unload assemblies at will. The .NET runtime tends to exhibit some odd/unpredictable behaviour as you load assemblies with the same name, especially if they don't have strong names. You can end up with types no longer resolving as expected. By loading assemblies in the separate AppDomain, you side-step all of these issues. Ivan Tarasov wrote: Hello Matthew, oh, it's quite an ugly way. I was considering this but I rejected Hashtable because it smells like it is a hack :) Could you please explain the need of separate AppDomain? Is it because of some sequrity reason (loaded assembly can execute some nant internal code or its own code with nant's privelegies)? MM System.Collections.Hashtable is your friend here. :) MM Sounds good - just make sure you use a separate AppDomain while checking MM for assembly references. I would also recommend caching lists of MM dependent assemblies based on filename to save time. why do I need separate AppDomain? I wanted to do some caching (I needed something like std::set in C++), but I couldn't find something similar in framework, I'd apreciate if you point me the right way to do it --- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: verbosity of some tasks
At some point I'd like to use the multiple .resx input of resgen.exe - it would be nice to swallow output if no errors occur and just output: [resgen] Transformed 5 .resx files The solution builds would be a lot easier to read. Perhaps I can compress all of the reference copy operations into a single task call as well. [solution] Building SomeProject... [resgen] Transformed 5 .resx files [csc] Compiling 48 files (compiler output) [csc] Successfully compiled 48 files [copy] Copied 12 files to C:\fakeproject\bin\Debug ... etc Lots of work to get that point, however. Matt. Gert Driesen wrote: Martin, The delay-sign task will now at least output the number of assemblies that will be delay-signed ... About the solution task : we use resgen.exe to compile the resources and there's no way to quiet it down ... Gert - Original Message - From: Martin Aliger [EMAIL PROTECTED] To: ! nant [EMAIL PROTECTED] Sent: Tuesday, December 02, 2003 4:33 PM Subject: [nant-dev] verbosity of some tasks Hi again (hope last one today) I found verbosity level of many tasks very inconsistent. Maybe we could say how much task should output under normal run and other messages move into verbose level. for example solution task with only 2 assemblies to compile (without warning) outputs: [solution] Starting solution build. [solution] Building Gordic.General [Release]... Read in 11 resources from 'c:\temp\build-src\Gordic.Gene ral\Gordic.General.resx' Writing resource file... Done. [solution] Building Gordic.Support.Win32 [Release]... Read in 5 resources from 'c:\temp\build-src\Gordic.Suppo rt.Win32\Gordic.Support.Win32.resx' Writing resource file... Done. where plain [solution] Building Gordic.General [Release]... [solution] Building Gordic.Support.Win32 [Release]... should be enough. In opposite e.g. delay-sign outputs _nothing_ even when signing over 100 assemblies (in verbose mode it outputs 10 lines per assembly) I think something like copy's [copy] Copying 17 files to c:\temp\build-src. should be outputted. [delay-sign] 117 assemblies was delay signed. Regards, Martin --- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ --- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: building nightbuilds
What about a framework task that sets appropriate properties based on provided flags? This could allow us to hide a number of different tests to select appropriate frameworks: !-- Select the currently executing framework -- framework type=current / !-- Would these be useful at all? -- framework type=latest / framework type=earliest / !-- Selects (in order of preference) .NET 1.1, .NET 1.0, Mono or if none found, the current framework -- framework type=net-1.1,net-1.0,mono,current / Matt. Ian MacLean wrote: Hi Martin, I've been thinking about adding autodetection of frameworks so that if the default doesn't exist then try the one that nant is running with - maybe scanning thru the config file to get a match. This issue is tripping up a lot of users particularly as more people move to 1.1 only systems and we set 1.0 by default. The same issue occurs on linux with people who have mono installed in /usr/bin/ or some location other than /usr/local/bin. Ian Martin Aliger wrote: Framework 'net-1.0' does not exist or is not specified in the NAnt configuration file. Defaulting to no known framework. Buildfile: file:///E:/src/extern/nant/NAnt.build Target(s) specified: test BUILD FAILED aha - i have only net-1.1 installed so i need to edit .config. again - maybe add some message for newbies? or autodetect it somehow. I'm not sure here... Regards, Martin PS: tests/NAnt.Core/NAnt.Core.build build phase is failing for me --- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers --- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: BSD license for NAnt?
I don't know if there has been a consensus about the license change. The discussion kind of petered off after a while. I'm still supporting either LGPL or GPL with linking/plugins exception, however. Matt. Jaroslaw Kowalski wrote: Hi! According to releaseplan.html a Move to an Apache or BSD-style license. is planned for 0.9. As I'm going to contribute some code to NAnt (expression evaluator) I have a concern: I'd like my code to be BSD-licensed. Do I need to do anything special to be GPL-compatible? Is it ok if I just place the BSD header on top of my sources? Jarek --- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: FW: [Nant-users] solution stuff
Make sure your COM dll is registered on the server that is building your project. Gerold Kathan wrote: hi - we are trying to get our solution to build by nAnt - actually we are not successful - there seems to be something missing - we reference a COM dll (BAWPublicV5) and solution task produces follwoing error: * using nant-20031028.zip nighlty build any hints ? greetings from vienna, gerold. - compile: [solution] Starting solution build. BUILD FAILED INTERNAL ERROR System.ApplicationException: Couldn't find reference to type library 'BAWPublicv5' (TYPELIB\{E1A04E7 B-BB8C-474E-A8AD-C893042F08F1}\24.0\0\win32). at NAnt.VSNet.Reference.HandleWrapperImport(XmlElement elemReference) in C:\DOCUME~1\ADMINI~1\LOC ALS~1\Temp\tmp291.tmp\src\NAnt.VSNet\Reference.cs:line 373 at NAnt.VSNet.Reference..ctor(Solution solution, ProjectSettings ps, XmlElement elemReference, So lutionTask solutionTask, String outputDir) in C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\tmp291.tmp\src\NAnt .VSNet\Reference.cs:line 125 at NAnt.VSNet.Project.Load(Solution sln, String projectPath) in C:\DOCUME~1\ADMINI~1\LOCALS~1\Tem p\tmp291.tmp\src\NAnt.VSNet\Project.cs:line 175 at NAnt.VSNet.ProjectFactory.LoadProject(Solution sln, SolutionTask slnTask, TempFileCollection t fc, String outputDir, String path) in C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\tmp291.tmp\src\NAnt.VSNet\P rojectFactory.cs:line 50 at NAnt.VSNet.Reference..ctor(Solution solution, ProjectSettings ps, XmlElement elemReference, So lutionTask solutionTask, String outputDir) in C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\tmp291.tmp\src\NAnt .VSNet\Reference.cs:line 61 at NAnt.VSNet.Project.Load(Solution sln, String projectPath) in C:\DOCUME~1\ADMINI~1\LOCALS~1\Tem p\tmp291.tmp\src\NAnt.VSNet\Project.cs:line 175 at NAnt.VSNet.ProjectFactory.LoadProject(Solution sln, SolutionTask slnTask, TempFileCollection t fc, String outputDir, String path) in C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\tmp291.tmp\src\NAnt.VSNet\P rojectFactory.cs:line 50 at NAnt.VSNet.Solution.LoadProjects() in C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\tmp291.tmp\src\NAnt.V SNet\Solution.cs:line 373 at NAnt.VSNet.Solution..ctor(String solutionFileName, ArrayList additionalProjects, ArrayList ref erenceProjects, TempFileCollection tfc, SolutionTask solutionTask, WebMapCollection webMappings, Fil eSet excludesProjects, String outputDir) in C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\tmp291.tmp\src\NAnt.V SNet\Solution.cs:line 113 at NAnt.VSNet.Tasks.SolutionTask.ExecuteTask() in C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\tmp291.tmp\s rc\NAnt.VSNet\Tasks\SolutionTask.cs:line 289 at NAnt.Core.Task.Execute() in C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\tmp291.tmp\src\NAnt.Core\Task.c s:line 151 at NAnt.Core.Target.Execute() in C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\tmp291.tmp\src\NAnt.Core\Targ et.cs:line 207 at NAnt.Core.Project.Execute(String targetName) in C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\tmp291.tmp\ src\NAnt.Core\Project.cs:line 753 at NAnt.Core.Project.Execute() in C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\tmp291.tmp\src\NAnt.Core\Pro ject.cs:line 729 at NAnt.Core.Project.Run() in C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\tmp291.tmp\src\NAnt.Core\Project .cs:line 778 Please send bug report to [EMAIL PROTECTED] Total time: 4.3 seconds. --- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: solution task and linked VS.Net files.
Viehland, Kirk wrote: Nant developers, I am getting this error when I compile a VS.Net 2003 solution with an ProductInfo file that has been linked from a parent directory. Just as a side note - what is a Linked file within a solution? How is one created? --- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] target run[after|before]=.../
I've been thinking about some of the target dependency functionality, and I was wondering what people thought about having some extra specification of target ordering. There's a couple of types in here, so I've broken them up. I'm interested in hearing opinions of what people think of these. 1. Explicit ordering of user-passed targets One of the patterns seen in the NAnt buildfile is the property target. Examples of this include the framework selection, release/debug selection, etc. It would be nice to specify the explicit ordering of these targets, without introducing a dependency. For instance, something like this could be possible: target name=debug runbefore=build,test,deploy / target name=release runbefore=build,test,deploy / This would tell the dependency engine that the debug/release targets must run before any of build/test/deploy. 2. Allowing targets to provide a virtual dependency This would allow one or more targets to provide a virtual target that could be used as a dependency in later targets. For instance: target name=modulea-config1 provides=modulea / target name=modulea-config2 provides=modulea / target name=deploy-modulea-generic depends=modulea / Any comments/suggestions/flames? :) Matt. --- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Re: echo proposal: sync w/ Ant
Gert Driesen wrote: No problem for me, but I suggest holding off on this change until after the 0.8.4 release ... would that be ok for you ? Sure. I'll keep the changes in my tree until 0.8.4 is out the door. Matt. --- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] NAnt 0.8.4 release ASAP?
It looks like tons of bug reports are coming from people using the 0.8.3 version of the solution task. Should we put out 0.8.4 ASAP? Any volunteers for the release? This might cut down on the repetitive bug reports. :) Matt. --- This SF.Net email sponsored by: ApacheCon 2003, 16-19 November in Las Vegas. Learn firsthand the latest developments in Apache, PHP, Perl, XML, Java, MySQL, WebDAV, and more! http://www.apachecon.com/ ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Editing .build files w/syntax hilighting in VS.NET
I'm not sure if this was posted to these lists before, but this registry modification with allow you to edit .build file with nice XML syntax hiliting in VS.NET 2003. Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\Editors\{8281C572-2171-45AA-A642-7D8BC1662F1C}\Extensions] build=dword:0027 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\Editors\{C76D83F8-A489-11D0-8195-00A0C91BBEE3}\Extensions] build=dword:0028 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\Languages\File Extensions\.build] @={58E975A0-F8FE-11D2-A6AE-00104BCC7269} unused=HTML --- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] MSBuild
#1 difference - the source availability! :) John Lam wrote: I've spent a fair amount of time recently with MSBuild, and have the following set of observations about its relationship to [N]Ant: --- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] solution task speedups
I pointed nprof at NAnt to see if I could get the solution task to build a little quicker for those of us with extra-large solutions. The code in Reference.cs was re-loading projects over and over if project references were being used. This re-loading of projects consumed over 99% of the solution build setup time! I've added some caching code in ProjectFactory to improve the solution task's build time. BTW- big thanks to whoever implemented the ProjectFactory.cs class - this really helps with the caching. Just a note In our ~70 project solution, our build time went from 800 seconds to approx. 240 seconds on a fairly poor build server. :) Matt. --- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] [need review] Fix for assembly path in NUnit2 test runner
I've found a bug in the NUnit2 test domain. It seems that it changes the current directory to be the directory of the testing assembly, but then tries to use the relative path to access the assembly. I haven't checked it in, because this behavour has changed at some point between 0.8.3 and now. Does anyone need this behaviour? I'm pretty sure it's a bug, but I thought I would check. Here's the patch (easy fix): diff -u -r1.10 NUnit2TestDomain.cs --- NUnit2TestDomain.cs 6 Oct 2003 15:19:56 - 1.10 +++ NUnit2TestDomain.cs 29 Oct 2003 19:13:01 - @@ -61,6 +61,7 @@ string currentDir = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(assemblyDir); +assemblyFile = Path.GetFileName(assemblyFile); try { RemoteTestRunner runner = CreateTestRunner(domain); Any objections to this fix? Matt. --- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] Licensing
I agree, though in [2] and [3] I believe that changes (if any) to the core NAnt code should be contributed back. Scott Hernandez wrote: All of these scenarios should be allowed, IMHO. - Original Message - From: Brant Carter [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, October 10, 2003 10:02 AM Subject: Re: [nant-dev] Licensing I think we should ask ourselves what types of uses we would want NAnt to be available to. Here are two scenarios. [1] A commerical company wants to release a custom task and charge money for it. Do we want to allow this? [2] A commerical company wants to distribute a customized version of NAnt as part of its software package (ie: A compiler company, IDE developer) and charge money for the entire package. Do we want to allow this? [3] A company creates a large software package that requires it to be built by the end customer. Are they allowed to distribute NAnt to do this? What if they modified NAnt in some way? brant --- This SF.net email is sponsored by: SF.net Giveback Program. SourceForge.net hosts over 70,000 Open Source Projects. See the people who have HELPED US provide better services: Click here: http://sourceforge.net/supporters.php ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers --- This SF.net email is sponsored by: SF.net Giveback Program. SourceForge.net hosts over 70,000 Open Source Projects. See the people who have HELPED US provide better services: Click here: http://sourceforge.net/supporters.php ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] Licensing
While replying to your note, I noticed the following on our license page: http://nant.sourceforge.net/license.html --- NAnt ships with a prebuilt version of NDoc. The NAnt license does not apply to these components located in the bin folder of the distribution. NDoc is licensed under the GNU General Public License. --- (also see http://cvs.sourceforge.net/viewcvs.py/ndoc/ndoc/COPYING.txt?rev=1.2view=auto) We would have to remove NDoc support if we moved to a different license. Unfortunately, this would also include moving to the LGPL. NUnit appears to be safe, though they have a clear anti-commercial (ie: you can't sell this product for profit) statement in the license. It isn't very clear on whether bundling the product with a commercial one is alright, though I assume that it's within the spirit. :) --- All of the NUnit source code is Copyright 2000-2002 by Philip Craig. All rights reserved. This software comes with no warranty whatsoever; Philip Craig does not accept any liability for any damage or loss resulting from the use of this software, no matter how caused. You can use this software free of charge, but you must not sell it beyond charging for reasonable distribution costs. This software includes classes and documentation from JUnit - see the licence for the JUnit licence. --- Scott Hernandez wrote: My largest concern is not that a company can use BSD-code, but rather add core enhancements (ie: modifications/enhancements/bug fixes to the core code) and keep those proprietary. I personally don't mind people keeping peripheral enhancements to themselves (for example, someone wishing to build a proprietary link between their app and NAnt, an NAnt gui, etc.), but it's good to get things like bug fixes and the like back from people using the code. It is great to get bug reports (and esp. patches) back from users. If someone is going to do this I don't think it matters what license the software is under. I don't feel pressed to send code patches to groups based on the license. Sure, I may be bound by the license to do it, but no one is going to force me. Agreed - though if you were to distribute the program publically, it's likely that someone could call you on it. Would changing the license from GPL keep you from contributing code, ideas and being an active member of the development team? Nope - I mentioned before that I would accept whatever license was agreed to by the development group as a whole, even if I don't agree completely with it. :) One other possibility I'd like to throw out these is keeping the core codebase under the GPL (or changing to the LGPL) and offering a business friendly binary distribution under a different license. ... This suggestion may not require a license change, but would likely require buy-in from the development group for the binary-licensed distribution. From a marketing point of view it is really good to keep a single license. The more license we use the more confusing the questions become. Going to a BSD/Apache style license is something we can evangelize and something to point to as a change in the project. This is true. We can get more people involved with NAnt if we have a less restrictive license. As Ian has pointed out, there is a lot of bad press around the viral affects of the GPL. Even if we do have a clause to lessen those restrictions, people will still react to the GPL part of the license and may not pay attention to the additional licensing clauses. I too lean more towards the LGPL license in some cases. In this case I look at what Ant has done under the Apache license. I don't see any problems they have run into (in choosing that license). If the Ant team had the option, now that they have been out there so long, I wonder if they would choose a sep. license for any reason. I wonder if there are times that they wish they could have stopped someone from doing something with another license. (I know that this is not an option as it is an apache project :) I'm not completely certain about this part. I guess I'm just not a fan of having to pander to the fear of others, but that might just be my personality. :) Perhaps instead of avoiding the issue by changing licenses, we could point people at a page explaining *why* the GPL won't make all of their proprietary IP automatically open-sourced. Like I said before: whatever we agree on I'll support. Just want to make sure I get my voice out there. ;) Matt. --- This SF.net email is sponsored by: SF.net Giveback Program. SourceForge.net hosts over 70,000 Open Source Projects. See the people who have HELPED US provide better services: Click here: http://sourceforge.net/supporters.php ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] RE: RE: [Fwd: Ready to tackle next release]
To: [EMAIL PROTECTED] Subject: [nant-dev] [Fwd: Ready to tackle next release] --- 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 --- 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 -- Matthew Mastracci [EMAIL PROTECTED] --- 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
Re: [nant-dev] RE: RE: [Fwd: Ready to tackle next release]
Oh - I hadn't realized that the CompilerBase was doing the same sort of hackery. In that case, I guess we should probably be sharing the delicate code between the two places. It might be better to move all of the code into the CompilerBase class and use it from there in the Solution task. Thanks for the clarification, Matt. Ian MacLean wrote: Matthew Mastracci wrote: Please let me know if I'm totally out to lunch on this one- I'm guessing that this resx issue you are describing is a problem with the solution task. I think he's talking about Compilerbase.cs. The regular compiler tasks do the same thing as solution task wrt determining correct namespace prefix. Its the same problem just in a different place. Ian I haven't really been in the code there lately, but checking in CVS, it looks as if the resource-compiling functionality is operating correctly (with the exception of the not-so-smart regex's you mentioned in your note). I can't see how more than one regex could be run on a single file. Are you running with an older version, or does CVS exhibit the problems you are seeing? Also with regards to The biggest problem is that NAnt assumes the filename (of the source file) is the name of the class that the RESX should be associated too- we should (according to the latest code) be parsing the files to determine the correct namespace/filename of the final .resource file. Resources should never be named to match their dependent files. Are you perhaps referring to .resx files that are not associated with any .cs or .vb files? I could see that there could be a problem there, but it seems to match VS.NET's behaviour in all of my tests. Can you please elaborate on #2 and #3 more? Again, if you're not talking about what I think you are, let me know, and I apologize in advance. :) Thanks, Matt. On Fri, 2003-10-03 at 21:21, Ian MacLean wrote: James, We'd love to see your patches. The resx issues was a known one - if your solution is cleaner and more accurate then obviously thats the way to go. Post patches here and they will be reviewed. Ian RE: [Fwd: Ready to tackle next release] If you are getting ready for a new release, I have a bunch of patches I would love to see added to NAnt. I would be willing to work with everyone as much as needed, to see that the changes make it into the release; or some variation of them - that is, if they are accepted. Here is a run down of our current changes to NAnt: I have mentioned this one previously; and it involves adding an options property to CompilerBase.cs. The original post had no subject and came out garbled (sorry about that), though I have filed it under RFE [811931] - Adding an options property to CompilerBase.cs, where you can read about the change in more detail. Another change we made was to allow passing of parameters as properties to other NAnt scripts via the nant task. This works really well and avoids having to using the inheritall attribute (which can be overkill - particularly if you have scripts that call themselves externally...). You can think of this feature as adding support for the -D: options of nant.exe The syntax looks like this: nant buildfile=somefile inheritall=false target=sometarget defines property name=buildtarget value=${script.build.target} / property name=copytarget value=${script.copy.target} / /defines /nant The defines are created as properties and accessible only from the invoked NAnt script as if they were passed with -D:. Their values are evaluated at the time just before the new script is invoked. Note: You can still use the inheritall attribute as well, though anything defined will override anything inherited if there is a name collision. The patch for this change is straightforward and simple. The only part left to do is handling all the NAnt location stuff with properties, which I am not too sure about (currently, I set this to unknown), though I'm sure someone on the list can enlighten me. Our next change is the most extensive but it fixes a long out-standing issue with NAnt. Basically, we did a rewrite on how NAnt handles RESX files. Currently NAnt has the following problems: 1.)The regular expressions for determining the namespace are poor and are easily confused by comments (that have the word namespace in them, for example // is located in the foo namespace). 2.)The regular expressions used by different languages are executed on all the source files. For example, when compiling a *.cs file the regular expressions for capitalized namespace lookup (I guess for VB) is executed even when it should not; this is bad, as it picks up false positives and increase the chance of error. 3.)The biggest problem is that NAnt assumes the filename (of the source file) is the name of the class that the RESX should be associated too. This issue killed our use of NAnt (until we fixed it), as our filenames do not match the Form class
Re: [nant-dev] solution task fix
Unfortunately, VS.NET uses the name of the class as the generated resources filename. Changing this would break any designer-created code. BTW, as a friendly suggestion. :) I can't read your mail from Sept. 9 because it appears to be encoded in something other than text/plain. I get nant-users in digest form, which means that I ignore any HTML/RTF mail that gets sent to it (not fun reading through HTML tags, as you can probably imagine). For archival purposes, it is highly recommended to send mail to the mailing list in text/plain format only. If this is not possible, ensure that your mail client is at least sending this as backup to text/html. Matt. Vincent Labatut wrote: hi, i think there's a problem in the way compiled resource filenames are computed in the solution task. I had a collision which was failing my build (cf my mail to the nant users list solution task - problem with resources on the 9th sept). The filenames are computed by scanning the corresponding source files (cs or vb) to each resx file, looking for a namespace and class with a regexp, maybe to find out a unique name (namespace + classname should be unique). The problem is that the regexp used aren't robust enough. There is also in the code an alternative way of doing so : using the path of the file as a unique name, and this seems to work well. I can't figure out why this first manner is put forward in the code, it sounds like making two many assumptions to me, whereas more robust algorithms exist. may I suggest the following fix, it forces the alternative way. If adopted, 3 functions would need to be deleted as well (GetDependentResourceName and the like), not included in this fix for clarity. --- resource.cs Wed Sep 03 11:00:01 2003 +++ resource.cs Wed Sep 17 15:18:35 2003 @@ -225,9 +225,9 @@ string inFile = _resourceSourceFile; string outFile; -if (!StringUtils.IsNullOrEmpty(_dependentFile)) { -outFile = GetDependentResourceName(_dependentFile); -} else { +// if (!StringUtils.IsNullOrEmpty(_dependentFile)) { +//outFile = GetDependentResourceName(_dependentFile); +// } else { StringBuilder sb = new StringBuilder(); if (!StringUtils.IsNullOrEmpty(Project.ProjectSettings.RootNamespace)) { sb.Append(Project.ProjectSettings.RootNamespace); @@ -240,7 +240,7 @@ } sb.Append(.resources); outFile = sb.ToString(); -} +//} outFile = Project.ProjectSettings.GetTemporaryFilename(outFile); _solutionTask.Project.Indent(); It does not prevent my project to have localized resource dlls (which BTW need dedicated tasks). N???X???'???u???)??Y?\?g???????b?HzG(?????u??^??X??X??v??zZ)z?%??l???q???z?mX???(??~??zw??X?b??u??^rs== --- 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
Re: RE : [nant-dev] solution task fix
Heh... I can see why it caught that as the wrong class. You might be able to reorder stuff to get around this problem. The *correct* solution for us would be to use a real C# parser. Perhaps the Mono C# parser would work, if the license is compatible. The regex one is good enough 99% of this time, but can't detect and ignore stuff like strings/etc. You *might* be able to use the new nesting regex constructs to ignore strings, but those hurt my brain. Handling the @strings would also be an extra nightmare: (?/name /) Captures the matched substring into a group name or number name. The string used for /name/ must not contain any punctuation and it cannot begin with a number. You can use single quotes instead of angle brackets; for example, |(?'name')|. (?/name1-name2/ ) Balancing group definition. Deletes the definition of the previously defined group /name2/ and stores in group /name1 /the interval between the previously defined /name2/ group and the current group. If no group /name2/ is defined, the match backtracks. Because deleting the last definition of /name2/ reveals the previous definition of /name2,/ this construct allows the stack of captures for group /name2 /to be used as a counter for keeping track of nested constructs such as parentheses. In this construct /name1 /is optional. You can use single quotes instead of angle brackets; for example, |(?'name1-name2')|. Thanks for the text/plain email! Much easier to read. ;) Matt. Vincent Labatut wrote: thanks, got it now ! So this is what visual studio acutally does... I found a thread where a guy was stuck because of visual studio grasping the wrong class name for his resource !! ;) (he had defined multiple classes within the same file, visual studio takes the first) http://www.dotnet247.com/247reference/msgs/10/52512.aspx I think we should still strengthen the regexp because it caught something in one of my source files which was not a classname, resulting in an invalid file name and an exception in path.combine. The following line in my source file causes a bug (c#) : string l_str_temp = div class=\QuotasGauge\ style=\WIDTH: + WIDTH_GAUGE.ToString() + px;\; I'll give it a look and try to come back with a better regexp... Matthew: I finally ended up in changing my email client and address ! sorry for the inconvenienceS -Original Message- From: Erv Walter [mailto:[EMAIL PROTECTED] Sent: Wednesday, September 17, 2003 5:00 AM To: Matthew Mastracci; Vincent Labatut Cc: [EMAIL PROTECTED] Subject: Re: [nant-dev] solution task fix VS.NET uses the full name of the class (namespace.classnam) for the behind the scenes .resx files (those resource files automatically created to hold WinForm resources, etc. If you create a .resx explicitly and add it to your project (for example, to hold string resources for internationalization purposes), VS.NET will use the filename prefixed with a namespace. The namespace will be a combination of your project's default namespace and the filepath to the .resx file. So, if you have a file called strings.resx in subdirectory 'Other' of a project with namespace 'Stuff', the resource will be embedded as Stuff.Other.strings.resource. So, parsing an associated .cs file is only sometimes appropriate (for the cases where the .resx file was automatically created behind the scenes). -Original Message- From: Matthew Mastracci [mailto:[EMAIL PROTECTED] Sent: Wednesday, September 17, 2003 9:50 AM To: Vincent Labatut Cc: [EMAIL PROTECTED] Subject: Re: [nant-dev] solution task fix Unfortunately, VS.NET uses the name of the class as the generated resources filename. Changing this would break any designer-created code. BTW, as a friendly suggestion. :) I can't read your mail from Sept. 9 because it appears to be encoded in something other than text/plain. I get nant-users in digest form, which means that I ignore any HTML/RTF mail that gets sent to it (not fun reading through HTML tags, as you can probably imagine). For archival purposes, it is highly recommended to send mail to the mailing list in text/plain format only. If this is not possible, ensure that your mail client is at least sending this as backup to text/html. Matt. Vincent Labatut wrote: hi, i think there's a problem in the way compiled resource filenames are computed in the solution task. I had a collision which was failing my build (cf my mail to the nant users list solution task - problem with resources on the 9th sept). The filenames are computed by scanning the corresponding source files (cs or vb) to each resx file, looking for a namespace and class with a regexp, maybe to find out a unique name (namespace + classname should be unique). The problem is that the regexp used aren't robust enough. There is also in the code an alternative way of doing so : using the path of the file as a unique name, and this seems to work well. I can't figure out why this first manner is put forward
Re: [nant-dev] license task broken
Yet another bug is that the License task loads assemblies (as far as I can remember) into the main AppDomain. It needs to have code to load these assemblies in a separate AppDomain, like the NUnit tasks have. Matt. On Sun, 2003-09-14 at 11:46, Sascha Andres wrote: Hi, It seems I found two bugs. One is in the licese task itself. It can happen (actually it does on one of my systems), thatasmLoaded.Location is either an empty string or null. If so, Path.GetFullPath(...) throws an exception. The attached diff files addesses this issue. The second thing seems to be in Directory scanner (I'm not sure, cause I have not much time to dive into this yet). If I give something like D:\licensed_components\*.dll as includes in the nested assembly, he tries to load dlls without the ending. Eg A file name assembly.dll gets only assembly . HTH, -sa -- Matthew Mastracci [EMAIL PROTECTED] --- 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
Re: [nant-dev] solution task addin
Quick note- should the compiler be specified for each of these args? Not all args are supported by all compilers. Specifying an argument that a compiler does not support may break your build. I'd wager that a good number of places used mixed-language builds. BTW, thanks for all of the patches Martin! Perhaps something like this (I'm not sure if using the language name (C#) or the compiler (csc) would be better): compilerargs compiler=C# arg value=/codepage:1250/ /compilerargs compilerargs compiler=VB arg value=/defaultnamespace:blah/ /compilerargs Or this: compilerargs arg compiler=C# value=/codepage:1250/ arg compiler=VB value=/defaultnamespace:blah/ /compilerargs Matt. Gert Driesen wrote: I'll commit it later today. Thanks, Gert - Original Message - From: Martin Aliger [EMAIL PROTECTED] To: ! nant [EMAIL PROTECTED] Sent: Friday, September 12, 2003 2:04 PM Subject: Re: [nant-dev] solution task addin Here it is reworked. Looks much nicer now :) solution configuration=Release outputdir=${output.dir} includevsfolders=false projects includes name=${build.dir}/**/*.csproj/ /projects assemblyfolders includes name=${output.dir}/ includes name=${nunit.dir}/ /assemblyfolders compilerargs arg value=/codepage:1250/ /compilerargs /solution Martin - Original Message - From: Martin Aliger [EMAIL PROTECTED] To: Gert Driesen [EMAIL PROTECTED]; ! nant [EMAIL PROTECTED] Sent: Friday, September 12, 2003 1:08 PM Subject: Re: [nant-dev] solution task addin use BuildElementCollection(compilerargument or compilerargs) instead of [BuildElementArray(arg)] Ok. I'll rework it. PS. can you also change your code format to use brackets on the same line, instead of on the next line ... sorry for that. I was trying hard, but we use different code convention here (similar to VS default) to I sometimes forget it... - Original Message - From: Gert Driesen To: Martin Aliger ; ! nant Sent: Friday, September 12, 2003 1:08 PM Subject: Re: [nant-dev] solution task addin Look very good, but I have some remarks : use BuildElementCollection(compilerargument or compilerargs) instead of [BuildElementArray(arg)] that will : - make it clear that those are argument that will be passed to the compiler - allow us to use a more structured build layout solution ... projects ... ... /project compilerarguments | compilerargs arg value=. / arg value= / /compilerarguments | /compilerargs /solution why not rename GetCSCArguments to GetCompilerArguments, as these arguments will also be useful for other compilers (VB.NET). Keep up the good work !!! Gert PS. can you also change your code format to use brackets on the same line, instead of on the next line ... - Original Message - From: Martin Aliger To: ! nant Sent: Friday, September 12, 2003 11:35 AM Subject: [nant-dev] solution task addin Hi all, Again, I propose an addin into solution task. It enables use of extra parameters for csc task as in this case: solution configuration=Release outputdir=${output.dir} includevsfolders=false projects includes name=${build.dir}/**/*.csproj/ /projects assemblyfolders includes name=${output.dir}/ includes name=${nunit.dir}/ /assemblyfolders arg value=/codepage:1250/ /solution adding extra /codepage:1250 to csc calls. This is needed, when .cs files are in another codepage than ascii, unicode or utf-8. This could be used for other switches as well! Hope you'll like it :) 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 --- 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
Re: [nant-dev] solution task addin
I agree with Martin. Sometimes you need to override a build setting on your build machine. At our shop, we tag each build with a string version that doesn't fit Microsoft's idea of a version number. This produces a warning and, on assemblies that build with warning = error, a build failure! It's easier for us to add the /nowarn: flag on each assembly at build time, rather than at development time (imagine adding this flag to 75 C# projects :)). The solution task was never designed to operate specifically like VS.NET, but rather with the ability to build VS.NET compatible files and offering a great deal more functionality. This makes up for the lack of functionality that Microsoft has given VS.NET's build process. I'm all for adding any functionality that allows me to customize my build further. See this link for some more info: http://nant.sourceforge.net/wiki/index.php/SolutionTask Martin Aliger wrote: Hi Jarek, Personally I think it's a bad idea to have extensions like this because they change semantics of solution task from something very simple (do it like VS.NET does) to something quite difficult to follow. Maybe you need to build exacly what solution says. But I need to override some settings. For example output path (outputdir attribute). This overrides something, which is in .csproj. It is handy in some situations. For the same reason could be handy to specify other compiler options. Good point by Matt, that it could be specified by compiler (c#/vb), though. As I see solution task, it is something that take vs solutions or projects and integrate it into nant. Level on which you integrate should be adjustable. Someone want to just build that solution file (build win project on Linux without vs), someone want to use just file list from csproj and override all other options. IMHO current implementation fullfil this idea (to some extent). I've made a quick scan through all csc.exe options that cannot be set in VS.NET by searching through MSDN for This compiler option is unavailable in Visual Studio.. And I see only four options that might be useful to add this way: /utf8output /noconfig /codepage /fullpaths any other options (there are 14 which aren't settable through VS.NET) don't make sense since they would change the semantics of the build or aren't usable with NAnt. True. There could be more options in future, or more options in another compiler (mono) and you want to use it for some reason. Why update .csproj when you could update .build file? For build servers where csprojs are submitted by developes you will need to read and change their csprojs. I do not like this much... I vote against the patch. Martin, if you have problems with the codepage - use UTF-8 for source files or change your system locale. The best way would be to move all language-specific elements to a separate resource XML file (*.resx) because XML files preserve encoding informations. To save your file as UTF-8: VS.NET = File = Advanced Save Options = Encoding = Unicode (UTF-8 with signature) Oh. Thanks! I do not know about this vs feature. resx havn't problem with this, but embedded xmldoc have :-(. Martin Jarek - Original Message - From: Gert Driesen [EMAIL PROTECTED] To: Martin Aliger [EMAIL PROTECTED]; ! nant [EMAIL PROTECTED] Sent: Friday, September 12, 2003 2:19 PM Subject: Re: [nant-dev] solution task addin I'll commit it later today. Thanks, Gert - Original Message - From: Martin Aliger [EMAIL PROTECTED] To: ! nant [EMAIL PROTECTED] Sent: Friday, September 12, 2003 2:04 PM Subject: Re: [nant-dev] solution task addin Here it is reworked. Looks much nicer now :) solution configuration=Release outputdir=${output.dir} includevsfolders=false projects includes name=${build.dir}/**/*.csproj/ /projects assemblyfolders includes name=${output.dir}/ includes name=${nunit.dir}/ /assemblyfolders compilerargs arg value=/codepage:1250/ /compilerargs /solution Martin - Original Message - From: Martin Aliger [EMAIL PROTECTED] To: Gert Driesen [EMAIL PROTECTED]; ! nant [EMAIL PROTECTED] Sent: Friday, September 12, 2003 1:08 PM Subject: Re: [nant-dev] solution task addin use BuildElementCollection(compilerargument or compilerargs) instead of [BuildElementArray(arg)] Ok. I'll rework it. PS. can you also change your code format to use brackets on the same line, instead of on the next line ... sorry for that. I was trying hard, but we use different code convention here (similar to VS default) to I sometimes forget it... - Original Message - From: Gert Driesen To: Martin Aliger ; ! nant Sent: Friday, September 12, 2003 1:08 PM Subject: Re: [nant-dev] solution task addin Look very good, but I have some remarks : use BuildElementCollection(compilerargument or compilerargs)
Re: [nant-dev] NUnit security
Especially those people using Draco.NET to build Sourceforge projects. :) Martin Aliger wrote: Seems ok. It is not problem for me - just a general thought. Maybe we could add note about it into doc for NUnit{1,2} tasks. Could be problem for projects like Draco.NET or CruiseControl.NET which use Nant internally. The rights should be adjustable from task attributes in future. Some tests could need more rights than others and only author of build file knows. Martin - Original Message - *From:* Lorphelin Yves mailto:[EMAIL PROTECTED] *To:* Martin Aliger mailto:[EMAIL PROTECTED] ; ! nant mailto:[EMAIL PROTECTED] *Sent:* Wednesday, September 10, 2003 6:11 PM *Subject:* RE: [nant-dev] NUnit security Hi Martin, If you have no special need for your service to run under a privileged account, let it then run with a less privileged account. Otherwise you can use the built-in .Net runtime security features: Let your nant script copy everithing you need to a special folder (incl Nunit assemblies). configure the .Net runtime on the build server so that everithing that is runned from this folder is granted less privileges. If your running W*S go to the administrative tools, .net Framework Configuration Runtime Security policyMachine code groups all Code My_computer_zone make a new code group who's condition types is url and use file://some directory/*.* the choose the permission set you want to use. (this can be done via the cmd line caspol) Hope this helps. Yves -Oorspronkelijk bericht- *Van:* Martin Aliger [mailto:[EMAIL PROTECTED] *Verzonden:* wo 9/10/2003 4:43 PM *Aan:* ! nant *CC:* *Onderwerp:* [nant-dev] NUnit security Hi all, I found serious security problem. My build server, which use NAnt internally, runs as windows service (as all build servers I know runs). This service runs as priviliged user. Nothing wrong with that unless you run test-cases with NUnit. It runs user code, which could contain maligious tests... It is not big problem for us, since I trust my coleagues, but it could be problem in some scenarios. What about limit somehow permitions in NUnitTask? Or is something done in NUnit itself? 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 --- 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
Re: [nant-dev] [PATCH] New fileset option fromframework
Just as an alternate suggestion, why not just have a framework fileset building task separate from the fileset task? It seems like adding specific functionality (through I agree this is a borderline case) to the task might be overloading a fairly concise task with something not as specific. Perhaps: fileset ... /fileset frameworkfileset ... /frameworkfileset ? Matt. On Sun, 2003-09-07 at 19:34, Ian MacLean wrote: Jaroslaw Kowalski wrote: After some thougths, I think that the whole FrameworkInfo management doesn't belong in NAnt.Core and therefore FileSets shouldn't rely on framework concept at all. I think FrameworkInfo does belong in NAnt.Core simply becuase its such a major part of the tool. But you're right you shouldn't have to have a currentframework to run nant. Its possible to not have one if you for example don't have the SDK installed - only the runtime. In that case nant would run and all the copy, move and other non .Net tasks will run fine. csc etc will obviouly not work. Am I right? Can the concept of frameworks be useful for anything other than dotnet ? And how is it possible not to have a currentframework ? Its also useful for running managed applications on mono where we automatically run 'mono foo.exe' rather than trying to execute foo.exe as a standalone executable. Ian --- 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 -- Matthew Mastracci [EMAIL PROTECTED] --- 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
RE: [nant-dev] solution task question
The solution task is busted in this regard. VS.NET will open each of the assemblies and determine the other assemblies that are referenced by it. This is one of the reasons that you end up with VS.NET locking certain output assemblies! :) This would require code to open each of the assemblies (which, of course, will lock the files on disk until the AppDomain terminates) and scan for their assembly dependencies. Please note that using Assembly.Load(byte[]) is not an acceptable alternative. Not only do some assemblies lock up when loaded this way, but it can also leak unmanaged memory in certain cases! Shadow copy directories might work, but I haven't investigated how NAnt has been handling these. Because of the lame .NET locking rules, the solution task assumes that each of the files in the output directory were placed there because they were referenced by the actual output file. Matt. On Tue, 2003-09-02 at 06:28, Eddie Tse wrote: I noticed this today as well with the solution task and it is not the same behaviour using VS.NET. For me, unreferenced assemblies do not get copied by VS.NET to the output directory. It only copies assemblies that are referenced directly in your project file or indirectly by a referenced assembly which it can find via the reference path. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Tom Cabanski Sent: Tuesday, 2 September 2003 10:21 PM To: Martin Aliger; [EMAIL PROTECTED] Subject: 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 --- 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 -- Matthew Mastracci [EMAIL PROTECTED] --- 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
Re: [nant-dev] last suggestion - Solution task again
The fileset would work fine. It can handle directories as well as individual files. You'll just need to use the correct method when you get the items from the FileSet. As well, it can handle the nifty wildcarding that gives NAnt its real power. :) On Sat, 2003-08-30 at 05:52, Martin Aliger wrote: Good find. I like your assembly-folders idea. Unfortunately, I'm quite busy at work and don't have any time for solution task development. It should be pretty straight-forward to implement if someone has an hour or so to space. I could code it - no problem. Does others see any other ideas? Also I'm not quite sure about naming. is assembly-folders proper name for that tag? And how to internally implement it? As list of paths? Fileset is not appropriate here. Maybe I could handle it simmilary as arg in csc? (only list tag I'm aware of) Martin Martin Aliger wrote: I did some exploration in this field and found this: Visual Studio use HintPath to find reference assemblies. If not found it uses all paths listed under registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\AssemblyFolders Maybe we should implement similar mechanism? Use HintPath first and then some path list which could defaults to this regisry read. And be overrided (extended?) by e.g. solution _verbose=true configuration=Release output=${build.dir} projects includes name=**/*.csproj/ /projects assembly-folders includes name=c:\temp\build\dll/ /assembly-folders /solution Martin -- Matthew Mastracci [EMAIL PROTECTED] --- 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
Re: [nant-dev] last suggestion - Solution task again
Good find. I like your assembly-folders idea. Unfortunately, I'm quite busy at work and don't have any time for solution task development. It should be pretty straight-forward to implement if someone has an hour or so to space. Martin Aliger wrote: I did some exploration in this field and found this: Visual Studio use HintPath to find reference assemblies. If not found it uses all paths listed under registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\AssemblyFolders Maybe we should implement similar mechanism? Use HintPath first and then some path list which could defaults to this regisry read. And be overrided (extended?) by e.g. solution _verbose=true configuration=Release output=${build.dir} projects includes name=**/*.csproj/ /projects assembly-folders includes name=c:\temp\build\dll/ /assembly-folders /solution Martin I think I understand. Each developer has a bunch of reference directories that are set up in VS.NET, right? You're right - we would likely need to add a references tag to the solution task to handle this situation. Matt. Martin Aliger wrote: Odd... We simply check in .csproj files and leave .csproj.user files on each machine individually. We haven't had any issues with this. Are you perhaps talking about 3rd party references? Or GAC references? no - normal references to assemblies. Unfortunattely we do not use CVS or similar system and every developer has another directory tree. A lot of us do not have sources from all assemblies and references pre-built .dlls. This result is scheme, where one developer writes assembly Gordic.General and another one Gordic.Win32 which is dependant on General Reference Name = Gordic.General AssemblyName = Gordic.General HintPath = ..\dll\Gordic.General.dll / But on build server no path ..\dll exists and nant failed with BUILD FAILED Couldn't find referenced assembly 'C:\temp\src\dll\Gordic.General.dll'. This is logical but imposible to solve right now. Maybe solution is to create some attribute to Solution task to override references path? (like outputdir) What is your ideas? Thanks, 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 --- 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 --- 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
Re: [nant-dev] last suggestion - Solution task again
I think I understand. Each developer has a bunch of reference directories that are set up in VS.NET, right? You're right - we would likely need to add a references tag to the solution task to handle this situation. Matt. Martin Aliger wrote: Odd... We simply check in .csproj files and leave .csproj.user files on each machine individually. We haven't had any issues with this. Are you perhaps talking about 3rd party references? Or GAC references? no - normal references to assemblies. Unfortunattely we do not use CVS or similar system and every developer has another directory tree. A lot of us do not have sources from all assemblies and references pre-built .dlls. This result is scheme, where one developer writes assembly Gordic.General and another one Gordic.Win32 which is dependant on General Reference Name = Gordic.General AssemblyName = Gordic.General HintPath = ..\dll\Gordic.General.dll / But on build server no path ..\dll exists and nant failed with BUILD FAILED Couldn't find referenced assembly 'C:\temp\src\dll\Gordic.General.dll'. This is logical but imposible to solve right now. Maybe solution is to create some attribute to Solution task to override references path? (like outputdir) What is your ideas? Thanks, 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 --- 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
Re: [nant-dev] last suggestion - Solution task again
Odd... We simply check in .csproj files and leave .csproj.user files on each machine individually. We haven't had any issues with this. Are you perhaps talking about 3rd party references? Or GAC references? I believe that even MSFT recommends copying files to a directory statically-relative to your project directory. So far we haven't found any 3rd-party library that can't handle having its files checked into CVS. We always reference the 3rd party components from that CVS directory and they work. Some of them require themselves to be installed on the machine as well (for license keys, etc.), but they can still be referenced from the CVS directories. On Mon, 2003-08-25 at 19:36, Brant Carter wrote: We solved this problem by creating a tool to update the .user files for each developer. It scans the directory tree and then creates a .user file for each .proj file with the correct reference path for that workstation. brant ... From: Martin Aliger [EMAIL PROTECTED] To: Matthew Mastracci [EMAIL PROTECTED] CC: ! nant [EMAIL PROTECTED] Subject: Re: [nant-dev] last suggestion - Solution task again Date: Mon, 25 Aug 2003 10:52:59 +0200 I'd recommend against comparing only filenames. This will likely end up causing trouble down the line. VS.NET is certainly a mess when it comes to hint paths, but I've found that they are generally accurate. I don't even think it uses them half of the time. :) Can you describe your situation with more detail (perhaps some examples) so I can see what is happening?. Sure. This is case, when more developers make some projects and upload them into build server. Than it should compile all that projects from several developers. Of course, every developer have another path in their .csproj files and that do not exists on server. Similar think could happen when you copy project around machines or even move to another disk. I think this is important to solve maybe with help of some attributes. There must be some way from this mess :-) Thanks! Martin Last one - and I'm not sure there. There are problems with references between projects when projects have different output paths. Project references are ok, but external refenreces sometimes brokes. Currently nant compares files as full pathnames using path from HintPath attribute. I suggest to compare filenames as names only without path. Could this be a problem? It works for me, but... Btw: Visual studio is real mess in this. Hope nant could be better! :) I send patch I made, but consider this as suggestion, not real patch --- 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 _ Protect your PC - get McAfee.com VirusScan Online http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963 -- Matthew Mastracci [EMAIL PROTECTED] --- 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] solution task fixes
Eddie - ignoring non-csproj and non-vbproj files looks good. We shouldn't do this without at least warning the user that we are ignoring their projects, however. Can you add a log message to this test? Eddie Tse wrote: Hi All, I've been experimenting with the solution task from CVS and had made a few changes in order to make it work for me. Added the NoWarn option from VS.NET 2003 I have SQL projects as well as deployment projects in my solution, so ignored those. And the webmapcollection was using the path instead of the url to retrieve the webmap object. Index: ConfigurationSettings.cs === RCS file: /cvsroot/nant/nant/src/NAnt.VSNet/ConfigurationSettings.cs,v retrieving revision 1.5 diff -u -r1.5 ConfigurationSettings.cs --- ConfigurationSettings.cs 17 Aug 2003 08:46:53 - 1.5 +++ ConfigurationSettings.cs 21 Aug 2003 13:54:48 - @@ -70,6 +70,7 @@ if (projectSettings.Type == ProjectType.CSharp) { htStringSettings[WarningLevel] = /warn:{0}; +htStringSettings[NoWarn] = /nowarn:{0}; htBooleanSettings[IncrementalBuild] = /incremental; } Index: Solution.cs === RCS file: /cvsroot/nant/nant/src/NAnt.VSNet/Solution.cs,v retrieving revision 1.8 diff -u -r1.8 Solution.cs --- Solution.cs 17 Aug 2003 08:46:53 - 1.8 +++ Solution.cs 21 Aug 2003 13:54:52 - @@ -61,6 +61,11 @@ string guid = m.Groups[guid].Value; string fullPath; +// only supports vb and cs projects +if (!project.ToLower().EndsWith(.csproj) !project.ToLower().EndsWith(.vbproj)) { +continue; +} + try { // translate URLs to physical paths if using a webmap WebMap map = _webMaps[project]; Index: Types/WebMapCollection.cs === RCS file: /cvsroot/nant/nant/src/NAnt.VSNet/Types/WebMapCollection.cs,v retrieving revision 1.1 diff -u -r1.1 WebMapCollection.cs --- Types/WebMapCollection.cs 17 Aug 2003 08:37:51 - 1.1 +++ Types/WebMapCollection.cs 21 Aug 2003 13:54:53 - @@ -75,7 +75,7 @@ if (value != null) { // Try to locate instance using Value foreach (WebMap WebMap in base.List) { -if (value.Equals(WebMap.Path)) { +if (value.Equals(WebMap.Url)) { return WebMap; } } --- 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 --- 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] last suggestion - Solution task again
I'd recommend against comparing only filenames. This will likely end up causing trouble down the line. VS.NET is certainly a mess when it comes to hint paths, but I've found that they are generally accurate. I don't even think it uses them half of the time. :) Can you describe your situation with more detail (perhaps some examples) so I can see what is happening?. Martin Aliger wrote: Last one - and I'm not sure there. There are problems with references between projects when projects have different output paths. Project references are ok, but external refenreces sometimes brokes. Currently nant compares files as full pathnames using path from HintPath attribute. I suggest to compare filenames as names only without path. Could this be a problem? It works for me, but... Btw: Visual studio is real mess in this. Hope nant could be better! :) I send patch I made, but consider this as suggestion, not real patch Thanks! Martin -- Created by Email.cz http://www.email.cz -- Get Your Free Email -- Created by Email.cz http://www.email.cz -- Get Your Free Email --- E:\src\nant\distrib\NAnt.VSNet\Solution.cs Fri Jul 25 10:07:28 2003 +++ E:\src\nant\src\NAnt.VSNet\Solution.cs Tue Aug 19 18:41:12 2003 @@ -181,11 +180,11 @@ foreach ( DictionaryEntry de in _htProjects ) { string strGUID = ( string )de.Key; Project p = ( Project )de.Value; - +/* ??without path?? foreach ( string strConfiguration in p.Configurations ) { -//Console.WriteLine( {0} [{1}] - {2}, p.Name, strConfiguration, p.GetConfigurationSettings( strConfiguration ).FullOutputFile.ToLower() ); -_htOutputFiles[ p.GetConfigurationSettings( strConfiguration ).FullOutputFile.ToLower() ] = strGUID; -} +_htOutputFiles[ GetConfigurationSettings( strConfiguration ).FullOutputFile .ToLower() ] = strGUID; +} */ +_htOutputFiles[ p.ProjectSettings.OutputFile.ToLower() ] = strGUID; } // Then build the dependency list @@ -196,8 +195,12 @@ foreach ( Reference r in p.References ) { if ( r.IsProjectReference ) AddProjectDependency( strGUID, r.ProjectReferenceGUID ); -else if ( _htOutputFiles.Contains( r.Filename.ToLower() ) ) -AddProjectDependency( strGUID, ( string )_htOutputFiles[ r.Filename.ToLower() ] ); +else + { + string refName = Path.GetFileName(r.Filename).ToLower(); /* ??without path?? r.Filename.ToLower()*/ + if ( _htOutputFiles.Contains( refName ) ) + AddProjectDependency( strGUID, ( string )_htOutputFiles[ refName ] ); + } } } } @@ -231,24 +234,29 @@ if ( !bFailed ) { // Fixup references -//Console.WriteLine( Fixing up references... ); +//_nanttask.Log(Level.Info, _nanttask.LogPrefix + Fixing up references... ); foreach ( Reference r in p.References ) { -//Console.WriteLine( Original: {0}, r.Filename ); if ( r.IsProjectReference ) { + // Console.WriteLine( Original: project {0} {1}, r.Filename,r.ProjectReferenceGUID ); Project pRef = ( Project )_htProjects[ r.ProjectReferenceGUID ]; if ( pRef == null ) throw new Exception( Unable to locate referenced project while loading + p.Name ); if ( pRef.GetConfigurationSettings( strConfiguration ) == null ) -throw new Exception( Unable to find appropriate configuration for project reference ); +throw new Exception( String.Format( Unable to find appropriate configuration ({0}) for project reference {1}, strConfiguration, GetProjectFileFromGUID(pRef.GUID) )); if ( pRef != null ) r.Filename = pRef.GetConfigurationSettings( strConfiguration ).FullOutputFile.ToLower(); } -else if ( _htOutputFiles.Contains( r.Filename.ToLower() ) ) { -Project pRef = ( Project )_htProjects[ ( string )_htOutputFiles[ r.Filename.ToLower() ] ]; -if ( pRef != null pRef.GetConfigurationSettings( strConfiguration ) != null ) -r.Filename =
Re: [nant-dev] Avoid using WebDAV with solution task
Understandable... I'm fairly certain that the webmap will allow you to map relative URLs easily. BTW, as an alternative that we use, have you tried converting your Web projects to Local projects? I've discovered that by changing the Web string to Local within your web .csproj, you can reference it as a normal project, without worrying about any of the web mapping items. Debugging works as expected, with the manual step of changing the debug application to URL and pointing it at your local share. Note that these debug settings are stored locally in the .suo file! On Sat, 2003-08-02 at 09:20, J. Jason De Lorme wrote: Yes, it would be helpful, but it must be able to map a *relative* path. When sycning from a source control system users will have their own client directory. We use P4 and all of our cilentspecs are setup (but *could* be different per user) as: d:\p4\projects.user\branchname\... The .build file is checked in at the branch level and we can't have it modified per user, especially with the automated build server sync'ing to: d:\p4\projects.builduser\branch...\... I searched the mail-archive and found your reference to this new code, but when I looked in CVS I couldn't find the WebMap.cs/WebMapAttribute.cs files. Where could I find these? And when is the next release candidate do out that would include these? If the relative path piece were included, it would be great. Thank you! - Jason - Original Message - From: Matthew Mastracci [EMAIL PROTECTED] To: J. Jason De Lorme [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Sent: Saturday, August 02, 2003 1:05 AM Subject: Re: [nant-dev] Avoid using WebDAV with solution task Just a note- there was recently a submission that added a webmap URL-filesystem mapping for the solution task. This allows the solution task to handle URL mappings by doing a simple URL pattern lookup. Would this handle your situation? On Fri, 2003-08-01 at 15:00, J. Jason De Lorme wrote: On the list of the many annoying nuances of Visual Studio is how it adds web projects to the .sln file. For instance if I were to create a project of type 'ASP.Net Web Application'; VS.net (2002/2003) will add among other things this entry to the solution file (MyApp.sln): Project({FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}) = Web, http://localhost/Web.csproj;, {61E62FEB-04CA-4AB7-B833-930F18E9A6FE} The problem here is that when you go to build this project using the solution task, the only way NAnt can find the files is through the fully quallified Url reference and as such uses the WebDAV protocol to pull each project file down through HTTP. This poses a problem to most developers who run Windows 2003 or even Win2k as WebDAV is generally closed up for security reasons. Additionally if it is grabbing these files through IIS with the .Net Framework installed, most of the files such as *.cs have the HttpForbiddenHandler associated in the machine.config file preventing them from being downloaded. The quick work-around is to update your sln by hand in a text editor, changing the UniqueName portion of the entry to have a relative path, i.e.: Project({FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}) = Web, Web\Web.csproj, {61E62FEB-04CA-4AB7-B833-930F18E9A6FE} Visual Studio is happy with this arrangement until such time as you need to modify the VS.Net Solution. If you only work with in the projects in the solution (add/remove/update), it's not updated. But if you add a New Project, or update anything at the Solution level, VS will update the .sln and *correct* this back to the web reference. I've extended the SolutionTask class to add an attribute: [TaskAttribute(updatewebreferences, Required=false)] ...and created a new class that will take the current solution file and update any projects with a UniqueName that are referenced through http(s) to be a relative path. So your solution task will look like this: target name=build solution configuration=${config} solutionfile=MyApp.sln verbose=${verbose} updatewebreferences=true / /target In doing this, it will first take the name of the project file, append a .webinfo - navigate through all subdirectories of the Project.BaseDirectory, open all matching .webinfo's and check to see if they contain that UniqueName in the UrlPath attribute. This will indicate the correct location of the .xxproj file. We take that location in relative terms and update the sln. *QUESTION* I've followed the code guidelines on the site, but how do I actually get this code into SourceForge as an alpha / beta for people to ridicule, rip-apart, poke holes and flame me on ;-)? I wouldn't want it in the actual NAnt bits until many people had used in environments different than my own. I did some searching
Re: [nant-dev] [0.8.3] RC2 build failure
Doh! I did do a merge from HEAD to 0.8.3. That would explain why it was busted... I can revert it tomorrow, unless someone has a chance tonite. On Mon, 2003-07-28 at 00:03, Gert Driesen wrote: I did make some changes to the build process on the main branch in order to better support third party libraries (for multiple framework versions). Apparently you've committed the NAnt.VSNet.build from the main branch to the 0.8.3 branch. Gert - Original Message - From: Matthew Mastracci [EMAIL PROTECTED] To: John Barstow [EMAIL PROTECTED] Cc: Nant-Developers (E-mail) [EMAIL PROTECTED] Sent: Monday, July 28, 2003 7:47 AM Subject: Re: [nant-dev] [0.8.3] RC2 build failure I actually hadn't touched that file. I was getting that error when I was trying to build and assumed that I had just caught someone mid-checkin. I haven't checked the CVS log to see what changes have been happening to the build process, however. On Sun, 2003-07-27 at 20:28, John Barstow wrote: I'm doing the build of RC2 with the 1.0 Framework and getting the following build failure. I assume it's related to the check-ins for the solution fixes. This is on BRANCH-083. BUILD FAILED C:\source\tools\nant\src\NAnt.VSNet\NAnt.VSNet.build(11,10): Property 'current.build.defines' has not been set! John C Barstow --- 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 -- 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 -- 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
Re: [nant-dev] Solution/Project Parser
Perhaps it might be better to design an .xsd and use the automatic XML deserialization routines. I've found that this way is much cleaner than the methods used in the current solution and slingshot tasks. Bernard Vander Beken wrote: Hello Yves, Have you looked at the parsing logic and object model in Slingshot, a tool and task included in NAntContrib? Although it is considered 'obsolete' and does not support Framework v1.1, it seems like a clean starting point. Best regards, Bernard -Original Message- *From:* Yves Reynhout [mailto:[EMAIL PROTECTED] *Sent:* Thursday, July 24, 2003 11:35 PM *To:* [EMAIL PROTECTED] *Subject:* Re: [nant-dev] Solution/Project Parser From reading the response posts I think I didn't make myself quiet clear. First of all what I'm suggesting is only of interest (I think) for the VS.NET solution/project camp. I have not found a library yet that allows me to parse VS.NET solution (.sln) and/or project (.csproj) files, and get an object model back from the parser. What is in that object model? Well, possibly everything you can find out about a solution or project via the related files (.sln/.csproj). How could this affect the solution task? For starters it wouldn't have to do the parsing of the solution/project files itself. Secondly, as a consequence, the parsing code wouldn't be mingled with what the solution task actually does. The object model could also provide for a task that e.g. extracts the files included in a project and updates a nant build file's csc task, essentially a partial one-way sync of the build file and the VS.NET solution/project. Another use could be to build VS.NET solution/project files via the object model (essentially letting something else be the master of files, references, interproject dependencies, etc...), which could maybe resolve your CVS problem - conflicts in .csproj files due to teamdev - you[Erv Walter] mention. Allowing the object model to save, in addition to the parsing, could provide valuable in this case. So to resume, I'm talking about building a VS.NET solution/project parser and object model (along the lines of what the VS.NET IDE extensibility object DTE offers right now), and integrating that with the solution task. --- 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] Solution/Project Parser
No problem. I'm all for refactoring the solution task. It's not an elegant solution for what it accomplishes. My overall goal for the solution task is to be able to point it at either a solution or a group of projects and have them built in the correct order, with outputs identical to how VS.NET would have built them. I'm interested to hear more of your ideas. I'm not particularly attached to any part of my implementation. :) If you do start work on cleaning up the object model, perhaps try to envision how the solution task could use other NAnt tasks, rather than the executables directly. I personally don't use the .sln parsing facilities of the solution task, but rather the fileset list of projects to reconstruct the solution. Yves Reynhout wrote: Hi, I've been following (though I should admit not very actively using) NAnt for a while now (about 1200 nant posts in my inbox) . Especially, not being able to handle the VS.NET solution concept was something that bothered me (well, let me rephrase: not handled elegantly). Ofcourse, it all depends on your focal point, meaning if you don't use VS.NET, you probably couldn't care less about the solution concept. And then it was Matthew Mastracci I believe (correct me if I'm wrong) that introduced the solution task into NAnt. Unfortunatly, I'm not quiet happy with its current implementation, because there's no clear separation between the solution/project as data (the content of the .sln and .*prj files) and the solution task itself. The current implementation provides an object model for its current purpose, namely the solution task. Wouldn't it be more usefull to build upon a common representation (read object model) of the VS.NET solutions and projects and re-use that representation in (for now) the solution task. Maybe there are other uses for the common representation (read other tasks) of the VS.NET solutions/projects. In an attempt to fill what I feel is a void I started work on a VS.NET Project and Solution Parser/Object model. My question to the NAnt team, and probably Matthew Mastracci in particular, if they are interested in this parser (which is in no way finished). I realize this could cause refactoring in the area of the solution task and since NAnt will come out with releases on a more regular basis, I'll let you guys be the judge of what I proposed. To Matthew Mastracci I'd like to say: Thank you for bringing the 'solution' task to the table.. --- 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] Solution/Project Parser
I'm with you on the .sln thing. We were getting daily conflicts on the .sln file, so I ended up checking it in as a binary file so that it wouldn't merge. .csproj files seems to be adequate for our needs. They occasionally conflict, but not enough so far to annoy us out of using them (yet). I'm also getting close to wanting to use NAnt completely within the build process. The locking of files by VS.NET is getting to be such a pain - I had to write an add-in for VS.NET that would search all the open file handles for the currently-being-built assembly and close it. :) It might just be easier (and faster?) to run the NAnt build each time instead. Erv Walter wrote: I'm not sure I understand your proposed change. Can you clarify? There are 2 camps (and now possibly a third). The difference between the camps is personal preference, really. One camp is the group of people who find dually managing build files and project/solution files undesirable (a completely valid point of view). This group of people would want the solution task to be as magic as possible since the idea is that the .sln and it's referenced project files contain all the pieces of information needed to correctly build stuff. Are you suggesting that things should be somehow broken out more from that end user's point of view? Again, I could use some clarification on exactly what you're proposing and what it would make build files look like (sorry for being slow on the uptake). For the record, I'm in the camp that prefers the clean, explicit nature of NAnt build files using csc and related tasks directly. I think that the VS.NET solutions and projects are messy, poorly designed by Microsoft, and unmanageable in large team development situations. I have daily CVS conflicts with the .csproj files I use to the point that we're considering removing them from CVS completely and making them personal tools only. We already have removed the .sln files from CVS. We have since configured VS.NET to use NAnt to build anyway, so the .csproj files have become little more than the holders of file lists and no longer the holder of build settings. *From:* Yves Reynhout [mailto:[EMAIL PROTECTED] *Sent:* Tuesday, July 22, 2003 5:02 PM *To:* [EMAIL PROTECTED] *Subject:* [nant-dev] Solution/Project Parser Hi, I've been following (though I should admit not very actively using) NAnt for a while now (about 1200 nant posts in my inbox) . Especially, not being able to handle the VS.NET solution concept was something that bothered me (well, let me rephrase: not handled elegantly). Ofcourse, it all depends on your focal point, meaning if you don't use VS.NET, you probably couldn't care less about the solution concept. And then it was Matthew Mastracci I believe (correct me if I'm wrong) that introduced the solution task into NAnt. Unfortunatly, I'm not quiet happy with its current implementation, because there's no clear separation between the solution/project as data (the content of the .sln and .*prj files) and the solution task itself. The current implementation provides an object model for its current purpose, namely the solution task. Wouldn't it be more usefull to build upon a common representation (read object model) of the VS.NET solutions and projects and re-use that representation in (for now) the solution task. Maybe there are other uses for the common representation (read other tasks) of the VS.NET solutions/projects. In an attempt to fill what I feel is a void I started work on a VS.NET Project and Solution Parser/Object model. My question to the NAnt team, and probably Matthew Mastracci in particular, if they are interested in this parser (which is in no way finished). I realize this could cause refactoring in the area of the solution task and since NAnt will come out with releases on a more regular basis, I'll let you guys be the judge of what I proposed. To Matthew Mastracci I'd like to say: Thank you for bringing the 'solution' task to the table.. --- 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] Solution/Project Parser
Does VS.NET save all of your files before doing a build, or do you have to manually save them? Bill Conroy wrote: My whole team does this all too. Here is the writeup I gave out a while back to the OT list on how to do this: Here are the steps I used to integrate[note I do not address keeping a csproj in sync with the build file, but I could] Do this once: 1. Add an external tool Title: Nant (Current Project) Command: nant -- assuming nant is in your path. Arguments: [I have nothing here, I use the default target in VS.NET] Init Dir: $(ProjectDir) I check Use Output Dir. This gives you output lines which are context sensitive for the file, line of the error/warning. 2. Add an external tool Title: Nant (Solution) Command: nant -- assuming nant is in your path. Arguments: [I have nothing here, I use the default target in VS.NET] Init Dir: $(SolutionDir) Check Output Dir. 3. I have hooked up F7 to Nant (Current Project), and Shift-F7 to Nant (Solution) through the Keyboard settings in Tools|Options. For each project you want to use Nant: 1. Create a new build configuration called Nant(or whatever). Turn off building for all projects in this solution. 2. Switch to this Configuration. Then you can use F7 to build. And when you want to debug none of you projects will build since your configuration has them turned off. I could have had some tool do a transform on my project file into a build file. I believe there is a xsl out there to do this. This all has worked quite nicely for me. HTH -bc -- Original Message -- From: Tomas Restrepo [EMAIL PROTECTED] Date: Thu, 24 Jul 2003 11:31:33 -0500 Matthew, I'm also getting close to wanting to use NAnt completely within the build process. We do this for our project. We actually went a little bit further,and we actually have a single VS.NET solution and project that *never* get built, it's just for intellisense and the vs.net VSS integration ;) Every developer (the main dev team has about 8 people) builds directly with nant everytime (one of my coworkers came up with the idea to add a custom tool to vs.net that fires nant for the project and puts the nant output in the vs.net output window. nifty!). No problems with this setup, really. The project is not too bit, though, consisting of about 20 dlls or so, and 200.000+ lines of code, with a fairly complex build and install process (for gac and COM+ registration). -- Tomas Restrepo [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 --- 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 --- 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] FIXED: Major temp directory leak in solution task
Please note - if you were using the solution task, I've fixed a major temp directory leak. It was leaking approx. one temp directory per project! You should also clear your Local Settings\Temp directory for the user you use to build your solutions. This fix should be in 0.8.3 final or next release candidate. Matthew Mastracci wrote: I've just realized that the temp directory leak in the solution task is likely slowing my build process down by an order of magnitude! Those who run checkin/nightly builds with this task may wish to consider an automated process to clear the temp directory until this bug can be resolved. It's likely just a matter of calling the delete method of the temp file collection after the compile has finished. I'll have to check this out. Just a warning in the meantime, Matt. --- 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/345/0 ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers --- 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] Building solution works in VS.NET but not when usingNAnt solution task
This is a bug. I'm pretty sure it's fixed in CVS. Use the lowercase version of your configuration (ie: release) instead of Release. [EMAIL PROTECTED] wrote: I have built some projects successfully and have made sure that the dependencies are build in order, however, when NAnt tries to compile one project in particular it prints out the following: System.Exception: Unable to find appropriate configuration for project reference at NAnt.VSNet.Tasks.Solution.Compile(String strConfiguration, ArrayList alCSC Arguments, String strLogFile, Boolean bVerbose, Boolean bShowCommands) at NAnt.VSNet.Tasks.SolutionTask.ExecuteTask() at NAnt.Core.Task.Execute() at NAnt.Core.Target.Execute() at NAnt.Core.Project.Execute(String targetName) at NAnt.Core.Tasks.CallTask.ExecuteTask() at NAnt.Core.Task.Execute() at NAnt.Core.Target.Execute() at NAnt.Core.Target.Execute() at NAnt.Core.Project.Execute(String targetName) at NAnt.Core.Project.Execute() at NAnt.Core.Project.Run() When running in VS.NET the build works fine. I have checked the .csproj file and nothing looks suspicious. Any help or ideas would be appreciated. regards, Chris --- 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/345/0 ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers --- 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/345/0 ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] Using TlbImp Without VS.NET Installed
Install the framework SDK. This includes all of the utilities required to fully build a VS.NET solution, minus devenv.exe. Aaron Jensen wrote: Part of our .NET software requires use of a .NET wrapper around a COM object. As such, during a build (using the sln / taks), tlbimp.exe is called create the wrapper. This works fine on machines with Visual Studio installed. However, on our build/deployment/qa/production servers, visual studio will NOT be installed. My question: how can I get the tlbimp.exe to work without visual studio .net installed? I have tried copying over all the binaries from \Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin, but that doesn't work. Any suggestions? : Aaron Jensen : [EMAIL PROTECTED] : 800.237.6335 ext 421 : Financial Profiles : www.profiles.com --- 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/345/0 ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers --- 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/345/0 ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] NAnt INTERNAL ERROR - Solution Task, VS.NET 2003
Do you have a release configuration in your MobileAdministratorPlugins project? Vitaly Livshits wrote: Hello, I am getting the following error when trying to to build my solution. Do you know what might be causing it? The .build file is attached. Thanks, Vitaly Livshits Senior Software Engineer Corum Corporation NAnt version 0.8.3 Copyright (C) 2001-2003 Gerry Shaw http://nant.sourceforge.net Buildfile: file:///C:/Corum Administrator/admin.build build: [solution] Starting solution build. [solution] Building QueryBuilderSchemaAdaptor [Release]... [solution] Building MobileAdministratorPlugins [Release]... Total time: 0 seconds. BUILD FAILED INTERNAL ERROR System.Exception: Unable to find appropriate configuration for project reference at NAnt.VSNet.Tasks.Solution.Compile(String strConfiguration, ArrayList alCSC Arguments, String strLogFile, Boolean bVerbose, Boolean bShowCommands) at NAnt.VSNet.Tasks.SolutionTask.ExecuteTask() at NAnt.Core.Task.Execute() at NAnt.Core.Target.Execute() at NAnt.Core.Project.Execute(String targetName) at NAnt.Core.Project.Execute() at NAnt.Core.Project.Run() Please send bug report to [EMAIL PROTECTED] mailto:[EMAIL PROTECTED]. --- 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/345/0 ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] VB projects now supported
I've also checked in support for reading resources of VB projects and generating the appropriate dependent resource name. This was supposed to go in RC1, but I managed to check it into the wrong CVS branch. Look for it in the final 0.8.3 release. Matt. --- 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/345/0 ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
[nant-dev] Solution task fixes checked in
For those interested, some recent bugfixes checked in: - Generate the correct filename for .resx files without dependent files (ie: x\foo.resx in project some.namespace - some.namespace.x.foo.resources) - Convert the requested configuration to lowercase to match the rest of the solution building process Matt. --- 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/345/0 ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] [RC1-Bug] solution task and VB.NET web application
Bizarre- I thought this was checked in before RC1. You might need to wait for the final release. Philippe Lavoie wrote: Im resending this with RC1 in the title so that John doesnt miss it J Im getting the following output which I though was solved by Matthew [solution] - C:\DOCUME~1\plavoie\LOCALS~1\Temp\-c5ht8zk\http___localhost_App Web_AppWeb.vbproj\Applicant\Address.aspx.resx Total time: 31 seconds. BUILD FAILED INTERNAL ERROR System.ArgumentException: Can't parse VB files yet at NAnt.VSNet.Tasks.Resource.GetDependentResourceName(String strDependentFile ) at NAnt.VSNet.Tasks.Resource.CompileResx() at NAnt.VSNet.Tasks.Resource.Compile(ConfigurationSettings cs, Boolean bShowC ommands) at NAnt.VSNet.Tasks.Project.Compile(String strConfiguration, ArrayList alCSCA rguments, String strLogFile, Boolean bVerbose, Boolean bShowCommands) at NAnt.VSNet.Tasks.Solution.Compile(String strConfiguration, ArrayList alCSC Arguments, String strLogFile, Boolean bVerbose, Boolean bShowCommands) at NAnt.VSNet.Tasks.SolutionTask.ExecuteTask() at NAnt.Core.Task.Execute() at NAnt.Core.Target.Execute() at NAnt.Core.Target.Execute() at NAnt.Core.Project.Execute(String targetName) at NAnt.Core.Project.Execute() at NAnt.Core.Project.Run() Please send bug report to [EMAIL PROTECTED] mailto:[EMAIL PROTECTED]. When Im compiling an ASP.NET project written in VB.NET through the solution task. The debug doesnt give more information so I dont know which file fails to load or which file it tries to load. My nant script looks like the following target name=CreateVirtualDir mkiisdir dirpath=${nant.project.basedir}/Source/Application/AppWeb vdirname=AppWeb accesswrite=True accessread=True accessexecute=True enabledirbrowsing=True accesssource=True / /target target name=compile depends=CreateVirtualDir solution configuration=${project.config} solutionfile=${nant.project.basedir}/Source/app.sln/ /target Philippe Lavoie Cactus Commerce eBusiness. All Business. Tel 819.778.0313 x302 888.CACTUS.0 Fax 819.771.0921 www.cactuscommerce.com [EMAIL PROTECTED] --- 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/345/0 ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] [RC1-Bug] solution task and VB.NET web application
I thought it was both, but I made a number of fixes and it might have slipped through my mental net. Will the final release be made against the HEAD or RC1? On Thu, 2003-07-17 at 19:25, Ian MacLean wrote: Matthew Mastracci wrote: Bizarre- I thought this was checked in before RC1. You might need to wait for the final release. Did you check in against the branch or the trunk ? Ian Philippe Lavoie wrote: Im resending this with RC1 in the title so that John doesnt miss it J Im getting the following output which I though was solved by Matthew [solution] - C:\DOCUME~1\plavoie\LOCALS~1\Temp\-c5ht8zk\http___localhost_App Web_AppWeb.vbproj\Applicant\Address.aspx.resx Total time: 31 seconds. BUILD FAILED INTERNAL ERROR System.ArgumentException: Can't parse VB files yet at NAnt.VSNet.Tasks.Resource.GetDependentResourceName(String strDependentFile ) at NAnt.VSNet.Tasks.Resource.CompileResx() at NAnt.VSNet.Tasks.Resource.Compile(ConfigurationSettings cs, Boolean bShowC ommands) at NAnt.VSNet.Tasks.Project.Compile(String strConfiguration, ArrayList alCSCA rguments, String strLogFile, Boolean bVerbose, Boolean bShowCommands) at NAnt.VSNet.Tasks.Solution.Compile(String strConfiguration, ArrayList alCSC Arguments, String strLogFile, Boolean bVerbose, Boolean bShowCommands) at NAnt.VSNet.Tasks.SolutionTask.ExecuteTask() at NAnt.Core.Task.Execute() at NAnt.Core.Target.Execute() at NAnt.Core.Target.Execute() at NAnt.Core.Project.Execute(String targetName) at NAnt.Core.Project.Execute() at NAnt.Core.Project.Run() Please send bug report to [EMAIL PROTECTED] mailto:[EMAIL PROTECTED]. When Im compiling an ASP.NET project written in VB.NET through the solution task. The debug doesnt give more information so I dont know which file fails to load or which file it tries to load. My nant script looks like the following target name=CreateVirtualDir mkiisdir dirpath=${nant.project.basedir}/Source/Application/AppWeb vdirname=AppWeb accesswrite=True accessread=True accessexecute=True enabledirbrowsing=True accesssource=True / /target target name=compile depends=CreateVirtualDir solution configuration=${project.config} solutionfile=${nant.project.basedir}/Source/app.sln/ /target Philippe Lavoie Cactus Commerce eBusiness. All Business. Tel 819.778.0313 x302 888.CACTUS.0 Fax 819.771.0921 www.cactuscommerce.com [EMAIL PROTECTED] --- 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/345/0 ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers --- 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/345/0 ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers -- Matthew Mastracci [EMAIL PROTECTED] --- 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/345/0 ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers
Re: [nant-dev] Bug in solution task with a web project
Someone posted a patch for this item earlier... I don't know if it was ever applied. I can look and make sure it's in CVS. Philippe Lavoie wrote: That did the trick, I added vbc (by contract, not choice) to the path and now it got a lot further. However, now it's stuck with the following which I hope is now fixed inside CVS (except that I can't compile CVS... ) Web_IClicWeb.vbproj\Global.asax.resx Total time: 0 seconds. BUILD FAILED INTERNAL ERROR System.ArgumentException: Can't parse VB files yet at NAnt.VSNet.Tasks.Resource.GetDependentResourceName(String strDependentFile ) at NAnt.VSNet.Tasks.Resource.CompileResx() at NAnt.VSNet.Tasks.Resource.Compile(ConfigurationSettings cs, Boolean bShowC ommands) at NAnt.VSNet.Tasks.Project.Compile(String strConfiguration, ArrayList alCSCA rguments, String strLogFile, Boolean bVerbose, Boolean bShowCommands) at NAnt.VSNet.Tasks.Solution.Compile(String strConfiguration, ArrayList alCSC Arguments, String strLogFile, Boolean bVerbose, Boolean bShowCommands) at NAnt.VSNet.Tasks.SolutionTask.ExecuteTask() at NAnt.Core.Task.Execute() at NAnt.Core.Target.Execute() at NAnt.Core.Project.Execute(String targetName) at NAnt.Core.Project.Execute() at NAnt.Core.Project.Run() Please send bug report to [EMAIL PROTECTED] Philippe Lavoie Cactus Commerce eBusiness. All Business. Tel 819.778.0313 x302 * 888.CACTUS.0 * Fax 819.771.0921 www.cactuscommerce.com [EMAIL PROTECTED] -Original Message- From: Matthew Mastracci [mailto:[EMAIL PROTECTED] Sent: Thursday, July 03, 2003 12:07 PM To: Philippe Lavoie Cc: [EMAIL PROTECTED] Subject: Re: [nant-dev] Bug in solution task with a web project Is CSC.EXE in your path while running NAnt? I'm hoping one day to add a web path mapping property to the solution task. Right now it has a very basic set of error-prone WebDAV methods to handle compiling of a web project that is usually on the build server anyways. It also tries to use the credentials of the logged-in user. Microsoft uses the FrontPage extensions to work around these problems. It seems to work better with IIS. Philippe Lavoie wrote: I wanted to use slingshot and for some reason it would load (and it doesn't work with VS 2003 anyway). Then, I noticed that the solution might be the way to go. I added a simple solution task to my build system ?xml version=1.0? project name=App default=build property name=debug value=true/ property name=build.basedir value=Build / target name=build solution configuration=debug solutionfile=source/App.sln/ /target /project The first time I was getting a 403 error (the web project is a virtual directory which points back inside my source directory). Fixed that by adding a checkbox to every permission available inside that directory. Then I ran the script again and got Nant -debug http://localhost/AppWeb/FixedTermLoan/Product.aspx.vb http://localhost/AppWeb/FixedTermLoan/Product.aspx.resx [solution] Building APP [debug]... [solution] Copying references: [solution] - System [solution] - System.Data [solution] - Microsoft.ApplicationBlocks.Data [copy] Copying 0 files to C:\Projects\App-dev\Latest\source\L ibrary\APP\bin\. [solution] - System.XML [solution] Compiling resources: [solution] Starting compiler... Total time: 0 seconds. BUILD FAILED INTERNAL ERROR System.ComponentModel.Win32Exception: The system cannot find the file specified at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startIn fo) at System.Diagnostics.Process.Start() at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) at NAnt.VSNet.Tasks.Project.Compile(String strConfiguration, ArrayList alCSCA rguments, String strLogFile, Boolean bVerbose, Boolean bShowCommands) at NAnt.VSNet.Tasks.Solution.Compile(String strConfiguration, ArrayList alCSC Arguments, String strLogFile, Boolean bVerbose, Boolean bShowCommands) at NAnt.VSNet.Tasks.SolutionTask.ExecuteTask() at NAnt.Core.Task.Execute() at NAnt.Core.Target.Execute() at NAnt.Core.Project.Execute(String targetName) at NAnt.Core.Project.Execute() at NAnt.Core.Project.Run() Please send bug report to [EMAIL PROTECTED] mailto:[EMAIL PROTECTED]. I'm using the latest snapshot available 20030621 (as the CVS source available from anonymous don't want to build. I'll send another report for that.) I wish I knew more what the problem was, since it seems I won't be able to use nant until this is fixed... Philippe Lavoie Cactus Commerce eBusiness. All Business. Tel 819.778.0313 x302 * 888.CACTUS.0 * Fax 819.771.0921 www.cactuscommerce.com [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/psa0016ave/direct
Re: [nant-dev] Bug in solution task with a web project
Phillippe: I've checked in a fix that allows you to generate VB resources from the WinForms projects. As far as I can tell, it generates identical resource filenames to VS.NET's. I can send you a pre-compiled solution task if you'd like - it may work within your NAnt installation. Matthew Mastracci wrote: Someone posted a patch for this item earlier... I don't know if it was ever applied. I can look and make sure it's in CVS. Philippe Lavoie wrote: That did the trick, I added vbc (by contract, not choice) to the path and now it got a lot further. However, now it's stuck with the following which I hope is now fixed inside CVS (except that I can't compile CVS... ) Web_IClicWeb.vbproj\Global.asax.resx Total time: 0 seconds. BUILD FAILED INTERNAL ERROR System.ArgumentException: Can't parse VB files yet at NAnt.VSNet.Tasks.Resource.GetDependentResourceName(String strDependentFile ) at NAnt.VSNet.Tasks.Resource.CompileResx() at NAnt.VSNet.Tasks.Resource.Compile(ConfigurationSettings cs, Boolean bShowC ommands) at NAnt.VSNet.Tasks.Project.Compile(String strConfiguration, ArrayList alCSCA rguments, String strLogFile, Boolean bVerbose, Boolean bShowCommands) at NAnt.VSNet.Tasks.Solution.Compile(String strConfiguration, ArrayList alCSC Arguments, String strLogFile, Boolean bVerbose, Boolean bShowCommands) at NAnt.VSNet.Tasks.SolutionTask.ExecuteTask() at NAnt.Core.Task.Execute() at NAnt.Core.Target.Execute() at NAnt.Core.Project.Execute(String targetName) at NAnt.Core.Project.Execute() at NAnt.Core.Project.Run() Please send bug report to [EMAIL PROTECTED] Philippe Lavoie Cactus Commerce eBusiness. All Business. Tel 819.778.0313 x302 * 888.CACTUS.0 * Fax 819.771.0921 www.cactuscommerce.com [EMAIL PROTECTED] -Original Message- From: Matthew Mastracci [mailto:[EMAIL PROTECTED] Sent: Thursday, July 03, 2003 12:07 PM To: Philippe Lavoie Cc: [EMAIL PROTECTED] Subject: Re: [nant-dev] Bug in solution task with a web project Is CSC.EXE in your path while running NAnt? I'm hoping one day to add a web path mapping property to the solution task. Right now it has a very basic set of error-prone WebDAV methods to handle compiling of a web project that is usually on the build server anyways. It also tries to use the credentials of the logged-in user. Microsoft uses the FrontPage extensions to work around these problems. It seems to work better with IIS. Philippe Lavoie wrote: I wanted to use slingshot and for some reason it would load (and it doesn't work with VS 2003 anyway). Then, I noticed that the solution might be the way to go. I added a simple solution task to my build system ?xml version=1.0? project name=App default=build property name=debug value=true/ property name=build.basedir value=Build / target name=build solution configuration=debug solutionfile=source/App.sln/ /target /project The first time I was getting a 403 error (the web project is a virtual directory which points back inside my source directory). Fixed that by adding a checkbox to every permission available inside that directory. Then I ran the script again and got Nant -debug http://localhost/AppWeb/FixedTermLoan/Product.aspx.vb http://localhost/AppWeb/FixedTermLoan/Product.aspx.resx [solution] Building APP [debug]... [solution] Copying references: [solution] - System [solution] - System.Data [solution] - Microsoft.ApplicationBlocks.Data [copy] Copying 0 files to C:\Projects\App-dev\Latest\source\L ibrary\APP\bin\. [solution] - System.XML [solution] Compiling resources: [solution] Starting compiler... Total time: 0 seconds. BUILD FAILED INTERNAL ERROR System.ComponentModel.Win32Exception: The system cannot find the file specified at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startIn fo) at System.Diagnostics.Process.Start() at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) at NAnt.VSNet.Tasks.Project.Compile(String strConfiguration, ArrayList alCSCA rguments, String strLogFile, Boolean bVerbose, Boolean bShowCommands) at NAnt.VSNet.Tasks.Solution.Compile(String strConfiguration, ArrayList alCSC Arguments, String strLogFile, Boolean bVerbose, Boolean bShowCommands) at NAnt.VSNet.Tasks.SolutionTask.ExecuteTask() at NAnt.Core.Task.Execute() at NAnt.Core.Target.Execute() at NAnt.Core.Project.Execute(String targetName) at NAnt.Core.Project.Execute() at NAnt.Core.Project.Run() Please send bug report to [EMAIL PROTECTED] mailto:[EMAIL PROTECTED]. I'm using the latest snapshot available 20030621 (as the CVS source available from anonymous don't want to build. I'll send another report for that.) I wish I knew more what the problem was, since it seems I won't be able to use nant until this is fixed... Philippe Lavoie Cactus Commerce eBusiness. All Business. Tel 819.778.0313 x302 * 888.CACTUS.0 * Fax 819.771.0921 www.cactuscommerce.com [EMAIL PROTECTED
Re: [nant-dev] FW: Upcoming 0.8.3 release
Is it alright to do a couple of pre-0.8.3 builds before the real one (at least one)? I found that for the last release, people are more likely to test and send bug reports for a pre- build than a development build. Matt. John Barstow wrote: I'm hoping to do an 0.8.3 release sometime next weekend. Before we can release, however, we'll need a clean build. The following tests FAIL when attempting to build from the latest CVS. If no-one fixes them before I wake up, I'll probably send in a patch or two. Note that they're ALL failing on the same line. (nant\tests\NAnt.Core\BuildTestBase.cs:line 96) Buildfile: file:///C:/source/tools/nant/tests/NAnt.DotNet/NAnt.DotNet.build build: test: Tests run: 10, Failures: 6, Not run: 0, Time: 2.0937232 seconds Failures: 1) Tests.NAnt.DotNet.Tasks.CscTaskTest.Test_DebugBuild : Error Executing Project at Tests.NAnt.Core.BuildTestBase.ExecuteProject(Project p) in c:\source\tools\nant\tests\NAnt.Core\BuildTestBase.cs:line 96 at Tests.NAnt.Core.BuildTestBase.RunBuild(String xml) in c:\source\tools\nant\tests\NAnt.Core\BuildTestBase.cs:line 80 at Tests.NAnt.DotNet.Tasks.CscTaskTest.Test_DebugBuild() in c:\source\tools\nant\tests\NAnt.DotNet\Tasks\CscTaskTest.cs:line 64 2) Tests.NAnt.DotNet.Tasks.CscTaskTest.Test_ReleaseBuild : Error Executing Project at Tests.NAnt.Core.BuildTestBase.ExecuteProject(Project p) in c:\source\tools\nant\tests\NAnt.Core\BuildTestBase.cs:line 96 at Tests.NAnt.Core.BuildTestBase.RunBuild(String xml) in c:\source\tools\nant\tests\NAnt.Core\BuildTestBase.cs:line 80 at Tests.NAnt.DotNet.Tasks.CscTaskTest.Test_ReleaseBuild() in c:\source\tools\nant\tests\NAnt.DotNet\Tasks\CscTaskTest.cs:line 72 3) Tests.NAnt.DotNet.Tasks.JscTaskTest.Test_DebugBuild : Error Executing Project at Tests.NAnt.Core.BuildTestBase.ExecuteProject(Project p) in c:\source\tools\nant\tests\NAnt.Core\BuildTestBase.cs:line 96 at Tests.NAnt.Core.BuildTestBase.RunBuild(String xml) in c:\source\tools\nant\tests\NAnt.Core\BuildTestBase.cs:line 80 at Tests.NAnt.DotNet.Tasks.JscTaskTest.Test_DebugBuild() in c:\source\tools\nant\tests\NAnt.DotNet\Tasks\JscTaskTest.cs:line 58 4) Tests.NAnt.DotNet.Tasks.JscTaskTest.Test_ReleaseBuild : Error Executing Project at Tests.NAnt.Core.BuildTestBase.ExecuteProject(Project p) in c:\source\tools\nant\tests\NAnt.Core\BuildTestBase.cs:line 96 at Tests.NAnt.Core.BuildTestBase.RunBuild(String xml) in c:\source\tools\nant\tests\NAnt.Core\BuildTestBase.cs:line 80 at Tests.NAnt.DotNet.Tasks.JscTaskTest.Test_ReleaseBuild() in c:\source\tools\nant\tests\NAnt.DotNet\Tasks\JscTaskTest.cs:line 66 5) Tests.NAnt.DotNet.Tasks.VbcTaskTest.Test_DebugBuild : Error Executing Project at Tests.NAnt.Core.BuildTestBase.ExecuteProject(Project p) in c:\source\tools\nant\tests\NAnt.Core\BuildTestBase.cs:line 96 at Tests.NAnt.Core.BuildTestBase.RunBuild(String xml) in c:\source\tools\nant\tests\NAnt.Core\BuildTestBase.cs:line 80 at Tests.NAnt.DotNet.Tasks.VbcTaskTest.Test_DebugBuild() in c:\source\tools\nant\tests\NAnt.DotNet\Tasks\VbcTaskTest.cs:line 66 6) Tests.NAnt.DotNet.Tasks.VbcTaskTest.Test_ReleaseBuild : Error Executing Project at Tests.NAnt.Core.BuildTestBase.ExecuteProject(Project p) in c:\source\tools\nant\tests\NAnt.Core\BuildTestBase.cs:line 96 at Tests.NAnt.Core.BuildTestBase.RunBuild(String xml) in c:\source\tools\nant\tests\NAnt.Core\BuildTestBase.cs:line 80 at Tests.NAnt.DotNet.Tasks.VbcTaskTest.Test_ReleaseBuild() in c:\source\tools\nant\tests\NAnt.DotNet\Tasks\VbcTaskTest.cs:line 74 Total time: 3 seconds. BUILD FAILED John C Barstow --- This SF.Net email is sponsored by: INetU Attention Web Developers Consultants: Become An INetU Hosting Partner. Refer Dedicated Servers. We Manage Them. You Get 10% Monthly Commission! INetU Dedicated Managed Hosting http://www.inetu.net/partner/index.php ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers --- This SF.Net email is sponsored by: INetU Attention Web Developers Consultants: Become An INetU Hosting Partner. Refer Dedicated Servers. We Manage Them. You Get 10% Monthly Commission! INetU Dedicated Managed Hosting http://www.inetu.net/partner/index.php ___ nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers