Build Fails Using 64-bit MSBuild

.NET obfuscator and automated error reporting

Moderators: Luke Jefferson, melvyn.harbour, dom.smith

Build Fails Using 64-bit MSBuild

Postby martincostello » Thu Feb 16, 2012 11:41 am

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:

Code: Select all
  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
 
Posts: 14
Joined: Tue Sep 13, 2011 12:54 pm
Location: London, UK

Postby Brian Donahue » Thu Feb 16, 2012 3:44 pm

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
 
Posts: 6670
Joined: Mon Aug 23, 2004 10:48 am

Postby martincostello » Thu Feb 16, 2012 3:45 pm

Ah - I must have something misconfigured somewhere, as SmartAssembly should be pointing at our in-house SQL server database.
martincostello
 
Posts: 14
Joined: Tue Sep 13, 2011 12:54 pm
Location: London, UK

Postby martincostello » Thu Feb 16, 2012 3:50 pm

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
 
Posts: 14
Joined: Tue Sep 13, 2011 12:54 pm
Location: London, UK

64 bit and Standard Edition

Postby larryroth » Thu Mar 22, 2012 8:47 am

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
 
Posts: 1
Joined: Thu Mar 22, 2012 8:43 am


Return to SmartAssembly 6

Who is online

Users browsing this forum: onnb and 0 guests