2009-09-08 7 views
3

J'intègre IronPython dans mon application C#. Pour une raison quelconque, j'ai du mal à charger les assemblages. Plus précisément, je veux System.dll afin que je puisse avoir accès aux classes .NET comme DateTime.Incorporation d'IronPython - Impossible d'ajouter une référence au système

Si je tente la ligne:

_runtime.LoadAssembly(_runtime.Host.PlatformAdaptationLayer.LoadAssembly("System")); 

je reçois:

could not load file or assembly 'System' 

Si je tape explicitement le chemin d'accès C: /WINDOWS/Microsoft.NET /.../ System.dll Je reçois:

The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047) 

alors j'ai essayé de faire l'importation à l'aide clr dans le script Python:

import clr 
clr.AddReference('System') 
from System import DateTime 

Et maintenant je:

Cannot import name DateTime 

Où vais-je tort? Pourquoi DateTime n'est pas dans System et pourquoi LoadAssembly ne peut pas trouver System.dll? Dois-je explicitement définir des chemins de recherche pour IronPython? Est-ce qu'il trouve un «système» invalide?

Tout cela fonctionne très bien lorsque je teste dans l'interpréteur IronPython.

Répondre

4

J'utilise engine.Runtime.LoadAssembly(typeof(string).Assembly); pour obtenir l'assemblage du système chargé; Je crois que c'est ainsi que la console IronPython le fait aussi.

P.S. Ne pas oublier que le source to IronPython is available; C'est une mine d'or pour ce genre de choses.

+0

Merci, je devrais vraiment creuser là-bas et voir ce que je peux trouver d'autre. – cgyDeveloper

+0

De quel module ai-je besoin pour importer afin d'appeler engine.Runtime.LoadAssembly()? –

+0

Il doit figurer dans la classe ScriptRuntime dans Microsoft.Scripting.dll. Ce n'est pas une méthode d'extension pour autant que je sache. C'est pour IronPython 2.6, au moins. –

Questions connexes