Piotr  wrote:
> > I have a feeling that getting autocompletion/intellisense for CLR
> > libraries referenced that way is not a trivial task, though it's
> > probably not impossible. What we ended up doing is writing a Python
> > 'pretend' module for our CLR assembly and importing that, but doing
> trickery so that the names actually resolve to the CLR assembly at runtime, so
> the Python module is only used to assist in the autocompletion. If you want I
> can get the specific details on how you can 'trick' the IDE into looking at 
> the
> Python script but actually reference the assembly.
> 
> Yes I would like to learn the "trick"

Just to give you some ideas on how you can do this w/ just your assembly.

The way we load the assembly is by calling into IronPython's clr module to
Load the assembly the same way it normally does (we call 
clr.LoadAssemblyByName).

If that fails we then try clr.LoadAssemblyByPartialName.  Those should turn into
clr calls to do Assembly.Load(name) and Assembly.LoadWithPartialName(name).

So the question then becomes what do you need to do to make sure we can find
your assembly.  One option would be to put the assembly in the GAC but that'll
require that it's strong named.  Another option would be to put your assembly
in the CLR's loader path.   That probably means putting the assembly where 
devenv.exe
lives or some similar location.  You could find a definite location by running 
fuslogvw (which
is part of the .NET framework SDK), click on settings, enable logging bind 
failures,
and then loading up VS and opening up your file.  We should try loading the 
assembly
and you should see the assembly name in the list of bind failures when you 
refresh
in fuslogvw.  You should also see a list of paths where we looked.

Probably what should really happen is that we should support looking in some 
location
within the project.  If someone wanted to make this change it would be in
ProjectState.cs in the AddReference(CallExpression node, Func<string, Assembly> 
partialLoader) 
method.  You'd just need to flow where to look into the ProjectState object.

> 
> 
> BTW: do you know the explanation for the behavior below?
> 
> > import System.Text as text
> > text.<TAB>   produces autocompletion list
> >
> > whereas
> >
> > import System.Text
> > System.Text.<TAB> does not

Does "Text." give you completions?  We could just be misanalysing the
import statement.
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to