From: Ernesto C. <ern...@gm...> - 2014-07-28 14:27:28
|
Hi all, I am trying to port an application using Firebird from Windows (.net 4.0) to Linux under Mono, and I am having problems with the firebird provider. I try to compile it using MonoDevelop 5.0 and could not build the project 'FirebirdSql.Data.FirebirdClient'. I get several errors regarding EntityFramework, which I resolved defining 'NET_35' in project options (there are #if (!(NET_35 && !ENTITY_FRAMEWORK)) directives in several files, but the project had 'NET_40' defined), but I'm still getting errors like 'System.Data.Metadata' namespace not found. - why is the expression using NET_35? does it compile in .net 4 under mono? - Is the 'Entity' folder usable/needed under linux? I removed the 'Entity' folder from the project. Now the build stops saying that FirebirdSql.Data.FirebirdClient/FirebirdClient/FbCommand.cs(22,22): Error CS1061: Type `FirebirdSql.Data.FirebirdClient.FbCommand' does not contain a definition for `expectedColumnTypes' and no extension method `expectedColumnTypes' of type `FirebirdSql.Data.FirebirdClient.FbCommand' could be found. Are you missing an assembly reference? (CS1061) (FirebirdSql.Data.FirebirdClient) Looking at the top of the file I find the definition: #if (!(NET_35 && !ENTITY_FRAMEWORK)) private Type[] expectedColumnTypes; #endif ENTITY_FRAMEWORK is not defined, NET_35 is defined, so the expression evaluates to if !(true && true) -> false so the expectedColumnTypes definition is not compiled. - is this array needed when Entity_framework is not defined, i.e. in Linux? if so, the expression is wrong. Or, - if this array is not needed outside Entity framework, its usage should be enclosed in similar #if expression (lines 318, 368) How do you compile the mono dll included in the release? thanks, Ernesto Cullen -- "Either write something worth reading or do something worth writing" B. Franklin |