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. 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 --- 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
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
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
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
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
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
Re: [nant-dev] last suggestion - Solution task again
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 --- 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
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] 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 =