How to use a C# dll in IronPython

后端 未结 6 772
轻奢々
轻奢々 2020-12-03 05:18

I have created a dll using C#. How do use the dll in IronPython. I have tried to add the dll using clr.AddReference(\"yxz.dll\"). But it fails. I have tried pla

相关标签:
6条回答
  • 2020-12-03 05:58
    import clr    
    clr.AddReferenceToFileAndPath(r"C:\Folder\Subfolder\file.dll")
    

    is the simplest way as proposed by Jeff in the comments. This also works:

    import clr
    import sys
    
    sys.path.append(r"C:\Folder\Subfolder")  # path of dll
    clr.AddReference ("Ipytest.dll") # the dll
    import TestNamspace  # import namespace from Ipytest.dll
    
    0 讨论(0)
  • 2020-12-03 06:03

    The Creating .NET Classes Dynamically from IronPython example, creates an assembly (which is later saved to disk as "DynamicAsm.dll"). It contains a class called "DynamicType", with a single static method called 'test'. This method takes four integers and adds them together.

    The nice thing is that this saves "DynamicAsm.dll" to disk. You can then start an IronPython interactive interpreter session and do the following :

    >>> import clr
    >>> clr.AddReference('DynamicAsm.dll')
    >>> import DynamicType
    >>> DynamicType.test(2, 3, 4, 5)
    14
    

    Note that the example uses the class name in the import statement.

    0 讨论(0)
  • 2020-12-03 06:05

    I think it's failing to find the file because it doesn't know where to look for it, see here for a detailed explanation as to how the clr.AddReference...() functions work.

    0 讨论(0)
  • 2020-12-03 06:09

    It's better to use clr.AddReferenceToFile(filename) , because it takes a relative path.

    import clr 
    clr.AddReferenceToFile("xxx.dll")
    

    Then you can import the classes by import as usual:

    import xxx
    

    or

    from xxx import *
    

    I recommend you to check out this book , it's very helpful. https://play.google.com/store/apps/details?id=com.gavin.gbook

    0 讨论(0)
  • 2020-12-03 06:14

    I got this behaviour only from the IronPython console. When I run a script it is fine. When I run a script the IronPython, sys.path contains an absolute path to my current working directory so it works. When I type in the console, sys.path only includes a '.' for the current working directory. That may explain the difference in behaviour.

    As a bit of a hacky solution, I created a file fixpath.py

    """This hacky script fixes the sys.path when I run the ipy console."""
    
    import sys
    import os
    
    sys.path.insert(0, os.getcwd())
    
    del sys
    del os
    

    Then I set up an environment variable IRONPYTHONSTARTUP with the absolute path to this file. Then whenever I start my IronPython console, this script is run and my sys.path includes an absolute reference to my current working directory and the subsequent calls to clr.AddReference work properly.

    0 讨论(0)
  • 2020-12-03 06:17

    You can use this:

    import clr 
    clr.AddReferenceToFile("yxz.dll")
    
    0 讨论(0)
提交回复
热议问题