Build Fails Using 64-bit MSBuild

martincostellomartincostello Posts: 21
edited March 22, 2012 3:47AM in SmartAssembly
Hi,

I'm trying to use SmartAssembly from within targets called by the 64-bit version of MSBuild. The assembly to be processed by SmartAssembly is compiled as x86.

I get the following error in the MSBuild log:
  SmartAssembly v6.6.1.44
  Copyright ¸ Red Gate Software 2005-2012
  Loading project MyProject.saproj
    Input=MyTool.exe
    Output=MyTool.exe
  Loading...
  Starting...
SmartAssembly.targets(19,5): error : SmartAssembly build failed: [MyProject.csproj]
SmartAssembly.targets(19,5): error : Using Jet databases is not possible in 64 bits applications. Please compile your assembly targeting x86 platform. [MyProject.csproj]
SmartAssembly.targets : warning : Using Jet databases is not possible in 64 bits applications. Please compile your assembly targeting x86 platform. [MyProject.csproj]
SmartAssembly.targets : warning :    at ..(String ) [MyProject.csproj]
SmartAssembly.targets : warning :    at ..() [MyProject.csproj]
SmartAssembly.targets : warning :    at ..(String ) [MyProject.csproj]
SmartAssembly.targets : warning :    at ..( ) [MyProject.csproj]
SmartAssembly.targets : warning :    at ..( ) [MyProject.csproj]
SmartAssembly.targets : warning :    at SmartAssembly.ConsoleApp.PerformBuild(String ,  , Dictionary`2 ) [MyProject.csproj]
SmartAssembly.targets : warning :    at SmartAssembly.ConsoleApp.PerformProjectAction(String ,  , Todo , Dictionary`2 ) [MyProject.csproj]
SmartAssembly.targets : warning :    at SmartAssembly.ConsoleApp.CommandLineAction(String , Todo , Dictionary`2 ) [MyProject.csproj]
SmartAssembly.targets : warning :    at SmartAssembly.ConsoleApp.Run(String[] ) [MyProject.csproj]
Done Building Project "MyProject.csproj" (default targets) -- FAILED.

It appears that SmartAssembly is being called in-proc and inheriting the 64-bit-ness of MSBuild, and then failing due to a dependency on an 32-bit component (i.e. JET).

Building the same project using 32-bit MSBuild or using Visual Studio succeeds.

Regards,
Martin

Comments

  • Brian DonahueBrian Donahue Posts: 6,590 Bronze 1
    Hi Martin,

    Sorry to say the only thing you can do about this is to move SmartAssembly's database to SQL Server. There is no 64-bit API for Jet (Access) databases.
  • Ah - I must have something misconfigured somewhere, as SmartAssembly should be pointing at our in-house SQL server database.
  • Indeed, I had forgotten to configure SmartAssembly with our custom SQL database name and web service URL when I installed it onto a different build server. User error :)

    It might be worth wrapping the exception in a future version of SmartAssembly so an error such as "MDB databases cannot be used calling SmartAssembly from a 64-bit MSBuild process." is printed to the MSBuild log. I'd have probably found the configuration issue a lot quicker if that had been the case, as the message lead me to believe it was a SmartAssembly bug.

    Regards,
    Martin
  • Hi,

    I am trying to run a TFS build using SmartAssembly and my Build Server is 64 bit. I cannot change the target platform of the Solution because my projects rely on it being set to 64 bit. I have the Standard Edition of SmartAssembly, so I cannot switch to from Access to SQL Server.

    Help! What are my options here??

    Thanks,

    Larry
Sign In or Register to comment.