Build Fails Using 64-bit MSBuild
martincostello
Posts: 21
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:
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
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
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.
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
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