[Python.NET] how can I build an assembly I can AddReference()?
Dave Hirschfeld
dave.hirschfeld at gmail.com
Fri May 28 09:52:14 CEST 2010
Brandon Craig Rhodes <brandon at ...> writes:
> I have only gotten as far as trying to AddReference() my new DLL, but
> have not been able to get it to succeed.
>
> >>> import clr
> >>> print clr.FindAssembly('Brandon')
> C:\Users\brandon\dev\pythonnet\Brandon.dll
> >>> clr.AddReference('Brandon')
> ...
> System.IO.FileNotFoundException: Unable to find assembly 'Brandon'.
> at Python.Runtime.CLRModule.AddReference(String name) in
> c:\Users\brandon\dev\pythonnet\src\runtime\moduleobject.cs:line 370
>
> You can see that, oddly enough, Python can find the assembly, but cannot
> create a reference to it.
Works for me:
Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)]
Type "copyright", "credits" or "license" for more information.
IPython 0.10 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.
In [2]: pwd
Out[2]: 'C:\\temp\\PythonDotNET'
In [3]: ls
Volume in drive C has no label.
Volume Serial Number is 90C1-4729
Directory of C:\temp\PythonDotNET
28/05/2010 08:35 <DIR> .
28/05/2010 08:35 <DIR> ..
26/10/2009 14:03 5,632 FactoryPattern.dll
1 File(s) 5,632 bytes
2 Dir(s) 188,252,098,560 bytes free
In [4]: import clr
In [5]: clr.AddReference('FactoryPattern')
Out[5]: <System.Reflection.Assembly object at 0x03798DA0>
...but I was in the same directory as the dll. Are you in the same directory?
What happens if you try to put the full path? e.g.
clr.AddReference(r'C:\temp\PythonDotNET\FactoryPattern')
If that doesn't work does using Assembly.LoadFile work? e.g.
from clr import System
from System import Reflection
full_filename = r'C:\temp\PythonDotNET\FactoryPattern.dll'
Reflection.Assembly.LoadFile(full_filename)
HTH,
Dave
More information about the PythonDotNet
mailing list