Je compile 2 librairies qui utilisent toutes les 2 System.Data et Mono.Data.SqliteClient:
[csc target="library" output="${dir}/Database.dll"]
[sources]
[include name="Libraries/Database/*.cs" /]
[/sources]
[references]
[include asis="true" name="/usr/lib/mono/2.0/System.Data.dll" /]
[include asis="true" name="/usr/lib/mono/2.0/Mono.Data.SqliteClient.dll" /]
[/references]
[/csc]
[csc target="library" output="${tests.dir}/TestDatabaseAccess.dll"]
[sources>
[nclude name="NUnit/Libraries/TestDatabaseAccess.cs" /]
[/sources>
[references]
[include asis="true" name="${tests.dir}/Database.dll" /]
[include asis="true" name="/usr/lib/mono/1.0/log4net.dll" /]
[include asis="true" name="/usr/lib/mono/2.0/System.Data.dll" /]
[include asis="true" name="/usr/lib/mono/2.0/Mono.Data.SqliteClient.dll" /]
[/references]
[/csc]
Database.dll compile correctement, mais pas TestDatabaseAcess.dll.La seule différence que je vois est la librairie /usr/lib/mono/1.0/nunit.framework.dll (1.0, pas2.0). L'erreur est:
[csc] ...NUnit/Libraries/TestDatabaseAccess.cs(98,16): The type IDataReader has two conflicting definitions, one comes from System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 and the other from System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0 89error
[csc] ...NUnit/Libraries/TestDatabaseAcc ess.cs(103,4): error CS0029: Cannot implicitly convert type `System.Data.IDataReader' to `System.Data.IDataReader'
...
Je ne comprends pas pourquoi Mono ne prend pas la version avec laquelle l'assembly a été compilée.
Une idée pour résoudre ce problème?
# quelques pistes
Posté par TImaniac (site web personnel) . Évalué à 2.
Je vois 2 solutions : log4net est peut être enregistré dans le gac 2.0, essai de le référencer directement. Sinon télécharge log4net, et enregistre le dans le GAC 2.0 avec gacutil.
S'il insiste toujours, tu peux toujours essayer de recompiler log4net en lui explicitant d'utiliser System.Data 2.0.
Bon courage :)
Un peu de pub au passage :
http://monofrance.free.fr
[^] # Re: quelques pistes
Posté par TImaniac (site web personnel) . Évalué à 2.
En fait log4net est compilée explicitement avec System.Data 1.0.5.
Ta bibliothèque est compilée explicitement avec System.Data 2.0
Forcement y'a un conflit :)
Un truc qui a l'air de marcher, utilise le compilateur gmcs plutôt que mcs. Celui-ci est prévu pour ne marcher qu'avec le profile 2.0, et il fait donc un mapping des versions forcé. Enfin je viens de tester et ca semble marcher.
[^] # Re: quelques pistes
Posté par jusob . Évalué à 1.
J'ai modifier NAnt.exe.config pour utiliser gmcs plutot que msc, et ca marche
[^] # Re: quelques pistes
Posté par jusob . Évalué à 1.
** (/usr/lib/mono/1.0/nunit-console.exe:9255): WARNING **: The following assembly referenced from ...bin/tests/TestDatabaseAccess.dll could not be loaded:
Assembly: log4net (assemblyref_index=1)
Version: 1.2.9.0
Public Key: b32731d11ce58905
Et pourtant:
$ gacutil -l|grep log4net
log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905
J'utilise lib/mono/2.0/gmcs.exe
Je vais essayer de recompiler log4net
[^] # Re: quelques pistes
Posté par jusob . Évalué à 1.
[^] # Re: quelques pistes
Posté par TImaniac (site web personnel) . Évalué à 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.