Richard,

We're recompiling everything every time, and fix all
references before compiling (hack the GUID of all
ref's out of the registry and fixing in the VBP file).

Yeah, I know, I'm dangerous;0)...

Thanks,
Eric

--- "Foster, Richard - PAL" <[EMAIL PROTECTED]>
wrote:

> Eric, 
> 
> One thing I ran into... I would *strongly* suggest
> that you do not
> compile your dll to the same location as that
> pointed to by the
> compatibility reference. If you do, and run into a
> compilation problem
> you can (and probably will) end up in a situation
> where you cannot
> recover the GUID's, and have to reset your
> references on all
> "downstream" projects.
> 
> As often happens, there are two schools of thought
> about how to best
> handle compatibility files. The first states that
> the binary
> compatibility file should be updated manually, and
> only when an
> interface actually changes. This is the one I have
> had most success
> with... But you can get into trouble if someone
> *should* have updated
> the compatibility file (because they introduced a
> new method, or changes
> a method signature) and hasn't.
> 
> The other option is that when the project is rebuilt
> successfully, the
> binary compatibility file should always be updated.
> If you choose this
> option, want to store the compatibility file in
> source code control (a
> good idea, IMHO), and are using continuous
> integration tools, then you
> will need to consider the location carefully (or use
> appropriate
> filtering) to prevent build loops.
> 
> Regards,
> Richard
> 
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On
> Behalf Of John Cole
> Sent: Monday, August 14, 2006 08:57
> To: 'Eric Fetzer'; Nant Users
> Subject: Re: [NAnt-users] Conditional Compile based
> on VB6 Return
> 
> Eric,
>   If you're using project or binary compatibility,
> you have to have the
> original DLL (so VB can get its CSLID info).
> 
>   If your not, be sure that isn't set in the VBP,
> otherwise you get that
> second error.
> 
> John
>   
> 
> -----Original Message-----
> From: Eric Fetzer [mailto:[EMAIL PROTECTED]
> Sent: Friday, August 11, 2006 4:15 PM
> To: John Cole; Nant Users
> Subject: Re: [NAnt-users] Conditional Compile based
> on VB6 Return
> 
> John,
> 
> I'm having a problem with the vb6.make task (the new
> one).  This task
> complains if the dll that I'm compiling exists in
> the first place.  So,
> I deleted the dll and used the task again.  It now
> complains when it
> tries to set the version compatibility:
> 
> Unable to set the version compatible component:
> D:\MyProject\MyDll.dll
> One or more of the properties in
> 'D:\MyProject\MyVbp.vbp' was bad.  Some or all of
> the properties might
> not be set correctly.
> 
> (filenames changed to stay on the security dude's
> good
> side)
> 
> Any clue what I need to do here?
> 
> Thanks,
> Eric
> 
> --- John Cole <[EMAIL PROTECTED]> wrote:
> 
> > Eric,
> >   We started using the newer try/catch tasks and
> removed that section.
> 
> > Here is our current vb6.make task:
> > 
> > ---------------------------------------
> > <target name="vb6.make">
> >             <call target="vb6.fixvbp" />
> >             
> >             <delete file="build.error"
> > if="${file::exists('build.error')}" />
> >             
> >             <!-- write out ref file -->
> >             <property name="tempexe32"
> > value="${vbp::getvalue(vbp,
> > 'ExeName32')}" />
> >             <if test="${string::get-length(tempexe32) ==
> 0}">
> >                     <property name="tempexe32"
> > value="${vbp::getvalue(vbp, 'Name')}" />
> >             </if>
> > <echo message="vbp: ${vbp}"/>
> > <echo message="srcroot: ${srcroot}"/>
> >             <property name="exename32"
> > value="${string::substring(tempexe32, 1,
> > string::get-length(tempexe32) -
> > 2)}" />
> >             <echo
> >
>
file="${path::combine(path::combine(srcroot,project.module),
> > path::get-file-name-without-extension(exename32) +
> '.ref')}"
> >
>
message="${vbp::get-references(path::combine(srcroot,vbp),
> > 'projects.txt')}"
> > />
> >             
> >             <property name="conditional.compile" value="" />
> >             <property name="conditional.compile" value="/D
> RELEASETYPE=1" 
> > if="${release.type == '1'}" />
> >             <property name="conditional.compile" value="/D
> RELEASETYPE=2" 
> > if="${release.type == '2'}" />
> >             <property name="conditional.compile" value="/D
> RELEASETYPE=3" 
> > if="${release.type == '3'}" />
> >             <property name="conditional.compile" value="/D
> RELEASETYPE=4" 
> > if="${release.type == '4'}" />
> >             <property name="conditional.compile" value="/D
> RELEASETYPE=5" 
> > if="${release.type == '5'}" />
> >             
> >             <trycatch>
> >                     <try>
> >                             <exec program="vb6.exe"
> >                                     commandline="/m
> > &quot;${path::combine(srcroot,vbp)}&quot;
> > ${conditional.compile} /outdir
> >
> &quot;${path::combine(srcroot,project.module)}&quot;
> > /out build.error"
> >                                     resultproperty="vb6.result"
> >                             />
> >                     </try>
> >                     <catch>
> >                             <!-- if this is not a library, then just
> fail -->
> >                             <property name="vbp.type"
> > value="${vbp::getvalue(vbp, '^Type=.*')}" />
> >                             <if test="${string::contains('.OleDll.
> > .OleExe. .Control.', '.' + vbp.type + '.') ==
> false}">
> >                                     <fail message="vb6.exe failed.
> This is not a library, cannot 
> > switch compatiblity modes."/>
> >                             </if>
> >                             <trycatch>
> >                                     <try>
> >                                             <trycatch>
> >                                                     <try>
> >                                                             <!-- set
> > compatiblity to project -->
> >                                                             <echo
> > message="${vbp::setvalue2(vbp,
> '^CompatibleMode=.*', '&quot;1&quot;', 
> > '^MajorVer=.*', 'CompatibleMode=')}"/>
> >                                                             
> >                                                             <exec
> > program="vb6.exe"
> >     
> > commandline="/m
> > &quot;${path::combine(srcroot,vbp)}&quot;
> > ${conditional.compile} /outdir
> >
> &quot;${path::combine(srcroot,project.module)}&quot;
> > /out build.error"
> >                                                             />
> >                                                     </try>
> >                                                     <catch>
> 
=== message truncated ===


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
NAnt-users mailing list
NAnt-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nant-users

Reply via email to