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