2010-10-04 4 views
2

Il me manque évidemment quelque chose de trivial, mais je n'arrive pas à importer de System.Dynamic; à savoir:Problème lors de l'importation de System.Dynamic dans IronPython

import clr
clr.AddReference('System.Dynamic')

qui ajoute clairement la référence saillant:

clr.References[2]
(< System.Dynamic, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a>)

mais l'importation échoue

import System.Dynamic

résultats dans:

Traceback (most recent call last):
File "", line 1, in
ImportError: No module named Dynamic

Quelle chose fondamentale que je manque ?

Répondre

1

L'assembly System.Dynamic dans .NET 4.0 n'inclut en réalité aucune surface publique. Il a juste un tas de types internes qui sont visibles à l'ensemble d'exécution C# qui sont utilisés pour l'interopérabilité COM. La décision de rendre tout cela interne a été prise assez tard dans le cycle du produit que l'assemblage reste encore.

Probablement que vous voulez Microsoft.Dynamic à la place qui contient un surensemble de la fonctionnalité dans System.Dynamic. Microsoft.Dynamic est livré avec IronPython.

+0

Exactement le même comportement avec Microsoft.Dynamic. – michael

+0

Eh bien, après avoir fait un ajout de Microsoft.Dynamic, vous ne serez pas en mesure d'importer un espace de noms "System.Dynamic". Au lieu de cela, vous devrez importer des espaces de noms définis dans cet assembly, tels que Microsoft.Scripting. –

+0

Un moyen utile de voir quels espaces de noms sont disponibles est de faire: x = clr.LoadAssemblyByName ('Microsoft.Dynamic') dir (x) qui vous permettra d'inspecter les espaces de noms dans un assembly (désolé pour le formatage, entrez est en train de valider édite pour une raison quelconque au lieu d'insérer de nouvelles lignes) –

Questions connexes