2009-11-10 6 views
1

Est-ce que System.Data dans Mono a été étendu pour inclure des fonctionnalités supplémentaires? Je tente d'utiliser l'analyseur SQL écrit pour Mono dans Mono.Data.SqlExpressions mais lorsque toutes les classes de l'espace de noms SqlExpressions ont été incluses, le projet échoue toujours à compiler car les classes de System.Data ne correspondent pas.
Exemple, System.Data.DataColumn ne définit pas l'événement PropertyChanged. Ai-je besoin d'utiliser les bibliothèques Mono System.Data à la place? Lorsque la classe Mono DataColumn est incluse dans le projet, cette erreur de compilation ne se produit pas (elle fait référence à des classes telles que DataCategory, qui ne se trouvent pas dans le framework .Net). Alternativement, toute aide sur la façon de porter l'analyseur Sql dans Mono à la structure .Net de Microsoft serait appréciée. J'ai tenté de télécharger la source et d'ajouter les bibliothèques manquantes au projet, mais cette approche semble défectueuse. Le nombre de dépendances manquantes semble augmenter au lieu de résoudre le problème.System.Data in Mono

Répondre

1

Mono a essayé d'être binaire et compatible API avec l'implémentation MS. Cela signifie qu'à l'exception de quelques méthodes et classes de support internes, toutes les API exposées par Mono doivent correspondre à 101 avec MS .Net. C'est pour éviter la complication comme les gens supposant qu'une méthode existe parce qu'elle compile dans Mono et ensuite cela ne fonctionne pas sur MS.Net après tout.

Lorsque de nouveaux codes et fonctionnalités sont implémentés par des contributeurs mono, ils sont généralement intégrés dans un assembly et un projet distincts. Mono.Data, comme son nom l'indique, est une telle "extension", il est donc logique que vous ayez besoin d'inclure tous les assemblages dépendants pour pouvoir le construire. Si Mono.Data.dll et ses deps fonctionneront sur MS.Net ou pas son affaire ou vérifier les docs et le tester. En ce qui concerne votre deuxième question, je ne peux pas vous donner de détails, mais à moins que le code ait des instructions spécifiques à exécuter sur Windows, il faudra probablement beaucoup de travail à mettre en communication. Comme pour toute API, beaucoup de code n'est pas exposé aux interfaces publiques et les fonctionnalités internes de l'implémentation doivent être travaillées lors du portage du code. Je vous suggère de prendre un moment pour analyser comment le code fonctionne et ensuite essayer de le faire fonctionner sur MS.Net en supprimant autant de deps sur le code Mono que cela a du sens. En fin de compte, si le code est suffisamment compatible, vous devriez envisager de patcher la source de Mono avec des instructions de compilation et des pragmas #if! MONO pour sauver le problème aux futurs utilisateurs.

+0

Merci pour votre réponse. – Opflash