Hi Markus,

ILSpy loads my assembly dll just fine.  As does a C# app.   Only ipy.exe 
complains about an error.

I think the missing file error is bogus and something else is going on.   But 
I'm not sure what.   Hopefully the below code and output will explain the 
situation better than English verbiage.  Note that I verify the file actually 
exists very earlier in the script!

-- Dave


IN test.py:

#!/bin/python

import clr
import os
import sys

FULLPATH = r"D:\path\to\my\Assembley.Net.dll"
if os.path.exists(FULLPATH):
    pathDir = os.path.dirname(FULLPATH)
    pathBase = os.path.basename(FULLPATH)

    # First load all assemblies ours depends on.
    for dep in ["mscorlib", "Microsoft.VisualC", "System", 
"System.Windows.Forms", "System.Data", ]:
        clr.AddReference(dep)
        print 'After %s: clr.References=%s' % (dep, clr.References)

    # Now try our assembly
    try:
        print 'Trying AddReferenceToFileAndPath(%s)' % FULLPATH
        clr.AddReferenceToFileAndPath(FULLPATH)
        print '\tWORKED! clr.References=%s' % clr.References
    except IOError as e:
        print '\tFAILED!  Exception=%s' % e
    print ''

    try:
        print 'Trying AddReference(%s)' % pathBase
        clr.AddReference(pathBase)
        print '\tWORKED! clr.References=%s' % clr.References
    except IOError as e:
        print '\tFAILED!  Exception=%s' % e
    print ''

    # Now try with the dir to the assembly DLL on sys.path
    sys.path.append(pathDir)
    try:
        print 'Trying AddReferenceToFileAndPath(%s)' % FULLPATH
        clr.AddReferenceToFileAndPath(FULLPATH)
        print '\tWORKED! clr.References=%s' % clr.References
    except IOError as e:
        print '\tFAILED!  Exception=%s' % e
    print ''

    try:
        print 'Trying AddReference(%s)' % pathBase
        clr.AddReference(pathBase)
        print '\tWORKED! clr.References=%s' % clr.References
    except IOError as e:
        print '\tFAILED!  Exception=%s' % e
    print ''

else:
    print '%s does not exist' % FULLPATH


SAMPLE OUTPUT:

D:\src\local>ipy test.py

After mscorlib: clr.References=(<mscorlib, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089>,
<System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089>,
<IronPython.Wpf, Version=2.7.0.40, Culture=neutral, 
PublicKeyToken=7f709c5b713576e1>)

After Microsoft.VisualC: clr.References=(<mscorlib, Version=4.0.0.0, 
Culture=neutral, PublicKeyToken=b77a5c561934e089>,
<System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089>,
<IronPython.Wpf, Version=2.7.0.40, Culture=neutral, 
PublicKeyToken=7f709c5b713576e1>,
<Microsoft.VisualC, Version=10.0.0.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a>)

After System: clr.References=(<mscorlib, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089>,
<System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089>,
<IronPython.Wpf, Version=2.7.0.40, Culture=neutral, 
PublicKeyToken=7f709c5b713576e1>,
<Microsoft.VisualC, Version=10.0.0.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a>)

After System.Windows.Forms: clr.References=(<mscorlib, Version=4.0.0.0, 
Culture=neutral, PublicKeyToken=b77a5c561934e089
>,
<System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089>,
<IronPython.Wpf, Version=2.7.0.40, Culture=neutral, 
PublicKeyToken=7f709c5b713576e1>,
<Microsoft.VisualC, Version=10.0.0.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a>,
<System.Windows.Forms, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089>)

After System.Data: clr.References=(<mscorlib, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089>,
<System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089>,
<IronPython.Wpf, Version=2.7.0.40, Culture=neutral, 
PublicKeyToken=7f709c5b713576e1>,
<Microsoft.VisualC, Version=10.0.0.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a>,
<System.Windows.Forms, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089>,
<System.Data, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089>)

Trying AddReferenceToFileAndPath(D:\path\to\my\Assembley.Net.dll)
        FAILED!  Exception=System.IO.IOException: file does not exist: 
D:\path\to\my\Assembley.Net.dll
   at IronPython.Runtime.ClrModule.AddReferenceToFileAndPath(CodeContext 
context, String file)
   at IronPython.Runtime.ClrModule.AddReferenceToFileAndPath(CodeContext 
context, String[] files)
   at 
Microsoft.Scripting.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame 
frame)
   at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
   at Microsoft.Scripting.Interpreter.LightLambda.Run4[T0,T1,T2,T3,TRet](T0 
arg0, T1 arg1, T2 arg2, T3 arg3)
   at System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite 
site, T0 arg0, T1 arg1, T2 arg2)
   at Microsoft.Scripting.Interpreter.DynamicInstruction`4.Run(InterpretedFrame 
frame)
   at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)

Trying AddReference(Assembly.Net.dll)
        FAILED!  Exception=System.IO.IOException: Could not add reference to 
assembly Assembly.Net.dll
   at IronPython.Runtime.ClrModule.AddReference(CodeContext context, String 
name)
   at IronPython.Runtime.ClrModule.AddReference(CodeContext context, Object 
reference)
   at IronPython.Runtime.ClrModule.AddReference(CodeContext context, Object[] 
references)
   at 
Microsoft.Scripting.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame 
frame)
   at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
   at Microsoft.Scripting.Interpreter.LightLambda.Run4[T0,T1,T2,T3,TRet](T0 
arg0, T1 arg1, T2 arg2, T3 arg3)
   at System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite 
site, T0 arg0, T1 arg1, T2 arg2)
   at Microsoft.Scripting.Interpreter.DynamicInstruction`4.Run(InterpretedFrame 
frame)
   at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)

Trying AddReferenceToFileAndPath(D:\path\to\my\Assembley.Net.dll)
        FAILED!  Exception=System.IO.IOException: file does not exist: 
D:\path\to\my\Assembley.Net.dll
   at IronPython.Runtime.ClrModule.AddReferenceToFileAndPath(CodeContext 
context, String file)
   at IronPython.Runtime.ClrModule.AddReferenceToFileAndPath(CodeContext 
context, String[] files)
   at 
Microsoft.Scripting.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame 
frame)
   at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
   at Microsoft.Scripting.Interpreter.LightLambda.Run4[T0,T1,T2,T3,TRet](T0 
arg0, T1 arg1, T2 arg2, T3 arg3)
   at System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite 
site, T0 arg0, T1 arg1, T2 arg2)
   at Microsoft.Scripting.Interpreter.DynamicInstruction`4.Run(InterpretedFrame 
frame)
   at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)

Trying AddReference(Assembly.Net.dll)
        FAILED!  Exception=System.IO.IOException: Could not add reference to 
assembly Assembly.Net.dll
   at IronPython.Runtime.ClrModule.AddReference(CodeContext context, String 
name)
   at IronPython.Runtime.ClrModule.AddReference(CodeContext context, Object 
reference)
   at IronPython.Runtime.ClrModule.AddReference(CodeContext context, Object[] 
references)
   at 
Microsoft.Scripting.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame 
frame)
   at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
   at Microsoft.Scripting.Interpreter.LightLambda.Run4[T0,T1,T2,T3,TRet](T0 
arg0, T1 arg1, T2 arg2, T3 arg3)
   at System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite 
site, T0 arg0, T1 arg1, T2 arg2)
   at Microsoft.Scripting.Interpreter.DynamicInstruction`4.Run(InterpretedFrame 
frame)
   at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)


D:\src\local>


-- Dave

From: Markus Schaber [mailto:m.scha...@3s-software.com]
Sent: Wednesday, June 29, 2011 2:30 PM
To: Dave Peterson; ironpython-users@python.org
Subject: AW: [Ironpython-users] Assembly references: file does not exist?

Hi, Dave,

Do you want to say that ILSpy won't load your assembly.dll, or it won't load 
MSVCR80.dll? The latter one is a native DLL, not an assembly, and thus cannot 
be loaded by ILSpy.

I re-read the thread, and my current Guess is that the "AddReference" is unable 
to find your "assembly.dll".

Did you specify the assembly name correctly? (Case? Without the ".dll" suffix?)

Grüße,
Markus
[Context cut to protect the innocent]

_______________________________________________
Ironpython-users mailing list
Ironpython-users@python.org
http://mail.python.org/mailman/listinfo/ironpython-users

Reply via email to