How can we help you today? How can we help you today?

Build Fails Using 64-bit MSBuild

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
martincostello
0

Comments

4 comments

  • Brian Donahue
    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.
    Brian Donahue
    0
  • martincostello
    Ah - I must have something misconfigured somewhere, as SmartAssembly should be pointing at our in-house SQL server database.
    martincostello
    0
  • martincostello
    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
    martincostello
    0
  • larryroth
    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
    larryroth
    0

Add comment

Please sign in to leave a comment.