I use the following "helper tasks" to allow my solutions to be built
with NAnt, MSBuild or DevEnv (for installers). If you look at the
"BuildWithSolutionTask", you'll see that I use the "AssemblyFolders"
construct, which can have as many "include" or "exclude" nodes as you need.
Tony
<readregistry property="DevEnvPath" hive="LocalMachine"
key="SOFTWARE\Microsoft\VisualStudio\8.0\InstallDir" />
<!-- =================================
target: Build Solution
================================= -->
<target name="BuildSolution">
<property name="OutputDirectory"
value="${OutputRoot}\${BuildConfig}\${SolutionName}"
overwrite="true" verbose="${VerboseOutput}" />
<call target="CleanWorkingDirectory" cascade="true"
verbose="${VerboseOutput}" />
<if test="${string::to-lower(BuildEngine)=='msbuild'}"
verbose="${VerboseOutput}">
<call target="BuildWithMsBuild" cascade="true"
verbose="${VerboseOutput}" />
</if>
<if test="${string::to-lower(BuildEngine)=='nant'}"
verbose="${VerboseOutput}">
<call target="BuildWithSolutionTask" cascade="true"
verbose="${VerboseOutput}" />
</if>
<if test="${string::to-lower(BuildEngine)=='devenv'}"
verbose="${VerboseOutput}">
<call target="BuildWithDevEnv" cascade="true"
verbose="${VerboseOutput}" />
</if>
<call target="CopyOutput" cascade="true"
verbose="${VerboseOutput}" />
</target>
<!-- =================================
target: Build with NAnt Solution Task
THIS SHOULD BE THE FIRST-CHOICE TASK FOR BUILDING SOLUTIONS,
BUT IT WON'T ALWAYS WORK WITH ASP.NET PROJECTS IF THEY HAVE
REFERENCES TO GAC ASSEMBLIES. IN THAT CASE, USE THE MSBUILD
TASK BELOW
================================= -->
<target name="BuildWithSolutionTask">
<solution configuration="${BuildConfig}"
includevsfolders="true" outputdir="${OutputDirectory}"
solutionfile="${SolutionFile}" failonerror="true"
verbose="${VerboseOutput}">
<assemblyfolders>
<include
name="${ReferenceRoot}\${BuildConfig}" />
</assemblyfolders>
</solution>
</target>
<!-- =================================
target: Build with MSBuild Task
THIS TASK SHOULD ONLY BE USED TO BUILD SOLUTIONS
WITH ASP.NET WEBSITES
THAT CAN'T BE BUILT USING THE ABOVE SOLUTION TASK
================================= -->
<target name="BuildWithMsBuild">
<!-- MSBuild Reference:
http://msdn2.microsoft.com/en-us/library/bb629394.aspx -->
<msbuild project="${SolutionFile}" target="Rebuild"
verbose="${VerboseOutput}">
<property name="Configuration" value="${BuildConfig}"
verbose="${VerboseOutput}" />
<property name="OutputDir" value="${OutputDirectory}"
verbose="${VerboseOutput}" />
<property name="BuildProjectReferences" value="true" />
<property name="OverwriteReadOnlyFiles" value="true" />
<arg
value="/p:"ReferencePath=${FrameworkRoot};${ReferenceRoot}\${BuildConfig}""
/>
<arg value="/verbosity:normal"
if="${string::to-lower(VerboseOutput)=='true'}" />
<arg value="/nologo"/>
</msbuild>
</target>
<!-- =================================
target: Build with DevEnv Task
THIS TASK SHOULD ONLY BE USED TO BUILD MSI INSTALLER PROJECTS
SINCE THOSE ARE NOT COMPATIBLE WITH THE SOLUTION TASK OR MSBUILD
================================= -->
<target name="BuildWithDevEnv">
<!-- DevEnv Reference:
http://msdn2.microsoft.com/en-us/library/xee0c8y7(VS.80).aspx -->
<exec program="devenv.com" basedir="${DevEnvPath}"
failonerror="true" verbose="${VerboseOutput}" >
<arg value=""${SolutionFile}"" />
<arg line="/build ${BuildConfig}" />
<arg value="/project "${ProjectFile}"" />
<arg line="/projectconfig ${BuildConfig}" />
<arg value="/out
"${OutputDirectory}\DevEnv.Output.txt"" />
</exec>
</target>
Scott Mitchell wrote:
> Ok thanks for you help. I did this through MSBuild commandline and get
> the same errors, so yes you are correct. It is not a NANT problem. So
> now I have another question, How do you solve this through NANT then. I
> found a property that I can set called “AdditionalReferencePath” is that
> what I want to use? If so how does that work if I need to add quite a
> few paths. If that is not correct, then wht is it that I use to make
> MSBuild see these references? I know this is a list for NANT and not
> MSBuild, but I have been looking at all the documents for all this and
> it is pretty overwhelming for some of it. And once I get this fixed it
> will be for NANT’s use then J.
>
>
>
> Thanks for any help,
>
> Scott Mitchell
>
>
>
> -----Original Message-----
>
>
>
>
>
> Agreed. Make sure the hint paths are correct. Remember, the reference
>
> paths in visual studio don't apply to msbuild run outside of it.
>
>
>
> -----Original Message-----
>
> From: [EMAIL PROTECTED]
>
> [EMAIL PROTECTED] On Behalf Of Lattimer,
>
> Ryan
>
> Sent: Tuesday, April 29, 2008 2:26 PM
>
> To: [email protected]
>
> Subject: Re: [NAnt-users] MS Visual Studio 2005 Solution filesand
>
> <msbuild>command
>
>
>
> I'm not sure setting the configuration to Release is going to fix your
>
> errors though. My guess is you are probably getting "reference not
>
> found errors". You will probably have to add extra references to your
>
> projects that Visual Studio does need because it can locate them itself.
>
>
>
> -----Original Message-----
>
> From: [EMAIL PROTECTED]
>
> [EMAIL PROTECTED] On Behalf Of Jacob
>
> Siegel
>
> Sent: Tuesday, April 29, 2008 2:21 PM
>
> To: [email protected]
>
> Subject: Re: [NAnt-users] MS Visual Studio 2005 Solution files and
>
> <msbuild>command
>
>
>
> I'm fairly new myself, but the following works for me:
>
>
>
> <property name="config" value="debug" overwrite="false" /> ...
>
> <msbuild project="src/Scripting/lua/Lua.NET.sln" verbosity="Minimal">
>
> <property name="Configuration" value="${config}" /> </msbuild>
>
>
>
>
>
> -Jacob
>
>
>
> Quoting Scott Mitchell <[EMAIL PROTECTED]>:
>
>
>
>> I hope someone here can help me.
>
>>
>
>>
>
>>
>
>> I am new to NANT. So please forgive me if I am overlooking something.
>
>>
>
>>
>
>>
>
>> My problems is using VS 2005 solution files and NANT. I understand
>
>> from the documentation that 2005 Solution files can not be used when
>
>> using the NANT <solution> command. So it was suggested on one of the
>
>> posts in archives for this list that <msbuild> be used. But I have
>
>> problems with that also.
>
>>
>
>>
>
>>
>
>> Here is the lines from my .build file that should build the solution
>
>> file. It launches the solution file, and does the build but I get all
>
>> kinds of errors when building through this, whereas if I launch the
>
>> .sln file myself and do the build that way it works fine with now
>
>> errors. One of the things that I noticed is that I need to set the
>
>> buildtype = release. How would I do that with this command? I can't
>
>> seem to find any examples on using <msbuild> command.
>
>>
>
>>
>
>>
>
>> <target name="buildBuilder">
>
>>
>
>> <msbuild
>
>> project="${local.chekout.path}\lightnet\lights32\lights32.sln"/>
>
>>
>
>> </target>
>
>>
>
>>
>
>>
>
>> This should be a lot easier than I am making it out to be, and I am
>
>> sure I am just missing something, but I can't seem to figure it out.
>
>>
>
>>
>
>>
>
>> Any sort of help would just be greatly appreciated.
>
>>
>
>>
>
>>
>
>> Thanks,
>
>>
>
>> Scott Mitchell
>
>>
>
>>
>
>>
>
>> --
>
>>
>
>> Scott Mitchell
>
>>
>
>> Engineering
>
>>
>
>>
>
>>
>
>> Colorado vNet
>
>>
>
>>
>
>>
>
>> direct 970 203 3756
>
>>
>
>> main 970 203 3700
>
>>
>
>> fax 970 203 3701
>
>>
>
>>
>
>>
>
>> email [EMAIL PROTECTED]
>
>> <[EMAIL PROTECTED]>
>
>>
>
>> web www.coloradovnet.com <http://www.coloradovnet.com>
>
>>
>
>>
>
>>
>
>> 255 East Sixth Street
>
>>
>
>> Loveland, Colorado 80537
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>
>
>
> ------------------------------------------------------------------------
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
> Don't miss this year's exciting event. There's still time to save $100.
> Use priority code J8TL2D2.
> http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> NAnt-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/nant-users
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
NAnt-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/nant-users