2009-10-15 11 views
2

En bref, quelles sont les étapes à suivre pour modifier la source du connecteur et l'installer dans Windows?Comment puis-je modifier le code source du connecteur MySQL et l'installer sur mon PC?

J'ai la version 6.1.2 de MySQL Connector/.NET installée sur ma machine, mais je reçois une exception pour chaque DateTime avec la valeur '0000-00-00'. Cette exception casse mon application. En tant que solution, j'ai téléchargé le code source du connecteur et modifié l'exception pour qu'au lieu de lancer une exception, elle renvoie la date '0001-01-01 00:00:00'. Bien que j'étais capable de modifier le code et même compiler la DLL (NOTE: j'ai commenté la référence d'Assemblée à ConnectorNet), je ne peux pas comprendre comment installer la DLL sur mon ordinateur. Apparemment, je ne suis pas capable de simplement remplacer la DLL dans le Global Assembly Cache parce que ma DLL personnalisée n'est pas fortement typée.

En résumé, quelles sont les étapes à suivre pour modifier la source du connecteur et l'installer dans Windows?

Merci.

+0

Je suis dans le même bateau que vous étiez ici. Il y a une faille fondamentale dans le connecteur mysql. Il ne parvient pas à produire des noms uniques dans les requêtes complexes. J'ai téléchargé l'open source, et j'ai édité ce que je pense que le changement devrait être mais j'ai du mal à construire. Avez-vous déjà été capable de modifier et de déployer correctement le '.dll' modifié? –

+0

@Travis Voyons, ça fait 3 ans, donc ma mémoire est vraiment floue. Je pense que j'ai été capable de le construire à la fin. Je pense que j'ai fini par télécharger MonoDevelop et ouvrir la solution dans cet outil. J'ai peut-être dû supprimer la propriété du projet/solution qui en fait un assembly signé. J'ai probablement supprimé quelque chose des propriétés d'assemblage. En fin de compte, si ce n'est que pour un usage personnel, c'est bien de ne pas signer les assemblées. Sinon, vous devrez soumettre un patch au projet MySQL Connector (comment?) Et obtenir la modification en amont. –

+0

En fait, j'ai fini par faire exactement cela. Vous pouvez voir un mini tutoriel/Q & A que j'ai posté ici: http://stackoverflow.com/q/12944570/1026459. Je ne pouvais pas me contenter de le signer non plus, même si j'ai trouvé une solution de contournement qui semblait superflue parce que, comme vous le dites, pourquoi le signer si vous ne l'utilisez que localement/personnellement. J'ai soumis un rapport de bug, mais plus que probable, il ne sera pas vu avant 2015. Merci pour votre réponse. –

Répondre

1

Vous avez besoin de la clé privée d'origine.

Les assemblages dans le GAC ont un «nom fort» et un hachage crypté en fait partie.

Seul le propriétaire de la clé privée peut créer un assembly avec le même keytoken public (signature numérique).

Vous avez besoin de la paire de clés (un fichier .snk ou .pfx) pour signer votre nouvelle DLL ou vous devrez recompiler les applications qui utilisent la DLL.

1

Il n'est pas vraiment recommandé de mettre à jour le connecteur .NET. Une meilleure raison serait de savoir pourquoi l'exception est levée.

Si vous obtenez des exceptions lorsque vous essayez d'insérer une date de 0000-00-00, envisagez de désactiver l'option de mode de serveur NO_ZERO_DATE du serveur MySQL.

+0

Je comprends qu'il n'est pas recommandé de mettre à jour le connecteur .NET. Toutefois, l'exception se produit dans le connecteur et je n'ai peut-être pas la possibilité ou l'accès de mettre à jour la base de données pour supprimer les dates non valides. –

Questions connexes