I know this is an old thread, but I finally got around to testing my
BeforeBuild vs PreBuild assumptions.  In short, I was wrong.. BeforeBuild
actually made it worst and I still don't have a solution.

Ex.  Assume I have these three projects in my solution

a.csproj
b.csproj
w.wixproj <-- Includes project references to both a.csproj and b.csproj

Within w.wixproj I have a batch file that signs our assemblies and
generates wxs files using Paraffin.

Scenario A (Prebuild):

If I use a Prebuild event to run the batch file, the build order (via
MSBuild) is this...

a.csproj
batchfile  <-- This fails because the output files from b.csproj are not
present.
w.wixproj
b.csproj

Scenario B (BeforeBuild):

If I remove the PreBuildEvent and add a BeforeBuild target in the wixproj,
like this...

  <Target Name="BeforeBuild">
    <Exec Command="&quot;$(ProjectDir)PreBuild-SignAndGenerate.bat&quot;
&quot;$(ProjectDir)&quot; $(Configuration) $(Platform)"/>
  </Target>

..the build order becomes this...

batchfile  <-- WTF?  I didn't expect this to happen first!
a.csproj
b.csproj
w.wixproj

That is not what I expected at all.  I want the batch file to run before
w.wixproj starts compiling.

Any ideas, how I get batch file to run in the correct position?


On Thu, Jun 26, 2014 at 12:51 PM, Tony <yellowjacketl...@gmail.com> wrote:

> Interesting, I wonder if BeforeBuild has the same (apparent, yet to be
> confirmed) issue a PreBuild?  I'll go read upon the two actions.
>
>
> On Thu, Jun 26, 2014 at 10:42 AM, John Cooper <jocoo...@jackhenry.com>
> wrote:
>
>> In my experience, using the BeforeBuild/AfterBuild targets explicitly is
>> always a better choice than PreBuild or PostBuild.  The only advantage of
>> PreBuild/PostBuild is you don't need to know any MSBuild syntax.  That's
>> also the main disadvantage.
>>
>> --
>> John Merryweather Cooper
>> Build & Install Engineer - ESA
>> Jack Henry & Associates, Inc.®
>> Shawnee Mission, KS  66227
>> Office:  913-341-3434 x791011
>> jocoo...@jackhenry.com
>> www.jackhenry.com
>>
>>
>>
>> -----Original Message-----
>> From: Tony [mailto:yellowjacketl...@gmail.com]
>> Sent: Thursday, June 26, 2014 9:32 AM
>> To: General discussion about the WiX toolset.
>> Subject: Re: [WiX-users] Build order problems Votive vs MSBuild
>>
>> I know this conversation is a bit old, but I figured out the real issue.
>> And it is worth sharing in case others run into a similar problem.
>>
>> It appeared as though we had a build order issue with our wix projects as
>> described elsewhere in this thread (works in VS, but fails with MSBuild).
>> I "fixed" the issue as described below.  However, this proved to just be
>> a Band-Aid and/or we just "got lucky".
>>
>> Recently I made changes to another wixlib project to reference two new C#
>> projects and the mysterious "build order" (fails with MSBuild, not in VS)
>> manifested itself again.  WTF?
>>
>> After carefully combing through the build output, I _think_ I know what
>> is causing this issue.  It is the "Pre-Build Events".  When MSBuild
>> "builds" a project it executes the Pre-Build Events _before_ it evaluates
>> the project's dependencies (which, if not built already, will trigger
>> dependent projects to get built).  In our case, our pre-build events on our
>> wix projects were used to run Paraffin to auto-generate wxs files for our
>> websites and sign the website's binaries.  This would fail because the
>> website itself had not been built yet because MSBuild had not reach the
>> point in which it would trigger the build of dependent projects.
>>
>> This issue does not happen with VS builds as VS doesn't use MSBuild to
>> evaluate project dependencies as described in the link elsewhere in this
>> thread.  So, in our case VS builds the website prior to building the wixlib
>> that executes the Pre-Build Paraffin and the wixlib project builds without
>> issue.
>>
>> I'm not sure how I'll fix this issue long-term.  But it goes without
>> saying that I look forward to WiX 4.0's ability to leverage the now defunct
>> "Harvest" option on project references.<g>
>>
>>
>>
>> On Wed, Jun 4, 2014 at 2:00 PM, Tony <yellowjacketl...@gmail.com> wrote:
>>
>> > Follow-up....
>> >
>> > Our old VS2012 solution was organized like this...
>> >
>> > A.vsxproj (C++)
>> > B.csproj (C#)
>> > C.csproj (C#)
>> > W.wixproj (WiX)
>> >
>> > Where project-B had a SOLUTION dependency on the C++ project-A.  And
>> > the WiX project has project dependencies on both project-B and
>> > project-C.  When built via VS2012, the solution build order would be A,
>> B, C, W.
>> > However, when MSBuild built this solution, the build order A, C, W, B.
>> > As expected, building project-W would fail because project-B's output
>> > was nowhere to be found.
>> >
>> > I followed the instructions in the link Rob provided and removed the
>> > SOLUTION dependency between project-B and project-A.  Instead, I
>> > manually edited project-B's csproj file to add a PROJECT dependency to
>> > project-A
>> > (VS2012 won't let you add a C++ as a project reference to a C# project).
>> > After reloading project-B, I now see project-A in project-B's
>> > References list.  Though, depending on VS2012 mood at the time, it may
>> > or may not have a little yellow triangle next to project-A's entry.
>> >
>> > Now via both VS2012 and MSBuild, the build order is A, B, C, W.
>> >
>> > I still don't quite understand why the changes make it work, but I'm
>> > glad it does.<g>
>> >
>> >
>> >
>> > On Wed, May 28, 2014 at 6:19 PM, Rob Mensching <r...@firegiant.com>
>> wrote:
>> >
>> >> Sounds a lot like:
>> >> http://blogs.msdn.com/b/msbuild/archive/2010/12/21/incorrect-solution
>> >> -build-ordering-when-using-msbuild-exe.aspx
>> >>
>> >> _______________________________________________________________
>> >>  FireGiant  |  Dedicated support for the WiX toolset  |
>> >> http://www.firegiant.com/
>> >>
>> >> -----Original Message-----
>> >> From: Tony [mailto:yellowjacketl...@gmail.com]
>> >> Sent: Wednesday, May 28, 2014 1:56 PM
>> >> To: WiX Users
>> >> Subject: [WiX-users] Build order problems Votive vs MSBuild
>> >>
>> >> We've run into this issue in which it appears as though our .sln
>> >> builds correctly when built through VS (Votive installed), but when
>> >> built using MSBuild, the WiX project dependencies appear to be
>> >> ignored.  This results in a build order problem (csproj is built
>> >> _after_ wixproj that needs its output).  If the build order is forced
>> >> (manually add a dependency in the sln file), the MSBuild build works
>> >> fine.  As such, it appears as if MSBuild is used on the .sln, the
>> >> auto generated project dependency list (and thus build order) is not
>> correct.
>> >>
>> >> NOTE:  We do NOT have WiX installed on our build server.  I have
>> >> modified our wixproj files per
>> >>
>> http://wixtoolset.org/documentation/manual/v3/msbuild/daily_builds.html.
>> >>
>> >> I found an old thread titled "Problem with build order under MSBuild
>> 4.0"
>> >> (4/14/10) that describes an identical issue.  And another thread
>> >> titled
>> >> "Wix3.6.1518.0 to 3.6.1915.0 issue" (7/20/11) in which this bug
>> >> http://sourceforge.net/p/wix/bugs/2588/ is linked.  But I can't tell
>> >> if the bug was fixed or just closed.
>> >>
>> >> Any ideas?
>> >>
>> >> VS/TFS2012, Wix 3.8
>> >> --
>> >> Tony
>> >>
>> >> ---------------------------------------------------------------------
>> >> --------- Time is money. Stop wasting it! Get your web API in 5
>> >> minutes.
>> >> www.restlet.com/download
>> >> http://p.sf.net/sfu/restlet
>> >> _______________________________________________
>> >> WiX-users mailing list
>> >> WiX-users@lists.sourceforge.net
>> >> https://lists.sourceforge.net/lists/listinfo/wix-users
>> >>
>> >>
>> >> ---------------------------------------------------------------------
>> >> --------- Time is money. Stop wasting it! Get your web API in 5
>> >> minutes.
>> >> www.restlet.com/download
>> >> http://p.sf.net/sfu/restlet
>> >> _______________________________________________
>> >> WiX-users mailing list
>> >> WiX-users@lists.sourceforge.net
>> >> https://lists.sourceforge.net/lists/listinfo/wix-users
>> >>
>> >
>> >
>> >
>> > --
>> > Tony
>> >
>>
>>
>>
>> --
>> Tony
>>
>> ------------------------------------------------------------------------------
>> Open source business process management suite built on Java and Eclipse
>> Turn processes into business applications with Bonita BPM Community Edition
>> Quickly connect people, data, and systems into organized workflows Winner
>> of BOSSIE, CODIE, OW2 and Gartner awards http://p.sf.net/sfu/Bonitasoft
>> _______________________________________________
>> WiX-users mailing list
>> WiX-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/wix-users
>> NOTICE: This electronic mail message and any files transmitted with it
>> are intended
>> exclusively for the individual or entity to which it is addressed. The
>> message,
>> together with any attachment, may contain confidential and/or privileged
>> information.
>> Any unauthorized review, use, printing, saving, copying, disclosure or
>> distribution
>> is strictly prohibited. If you have received this message in error, please
>> immediately advise the sender by reply email and delete all copies.
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Open source business process management suite built on Java and Eclipse
>> Turn processes into business applications with Bonita BPM Community
>> Edition
>> Quickly connect people, data, and systems into organized workflows
>> Winner of BOSSIE, CODIE, OW2 and Gartner awards
>> http://p.sf.net/sfu/Bonitasoft
>> _______________________________________________
>> WiX-users mailing list
>> WiX-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/wix-users
>>
>
>
>
> --
> Tony
>



-- 
Tony
------------------------------------------------------------------------------
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to