[python-win32] Access to .NET components from Python (Was: Win32 COM starter book)

Jens B. Jorgensen jens.jorgensen@tallan.com
Fri, 20 Dec 2002 14:33:16 -0600

Jens B. Jorgensen wrote:

> Mark Hammond wrote:
>>> Compile with csc /target:library MyAssembly.cs, register with
>>> regasm MyAssembly.dll /tlb:MyAssembly.tlb, and try to test it. Nope,
>>> OLE error 0x80131522. Google tells me that this means I need my
>>> assembly in the same directory as the executable! (That's Python, not
>>> the script - so definitely not where I'd like to put my random DLLs).
>> Yeah, this is .NET for you.  If you want it publically available, you 
>> must create a strongly named assembly and stick it in the GAC.  There 
>> are 2 choices - very public or very private.  However, the "very 
>> public" isn't as bad as it sounds - you are guaranteed to get the 
>> *except* object you compiled against, regardless of naming clashes, etc.
> As an aside I was trying to do this same thing just to try it. I run 
> regasm but I *still* can't get the object to create itself. It doesn't 
> matter if the object is in the current directory or the python 
> directory (same dir as python.exe). It still doesn't find it and I get 
> 'Class not registered'. Is it absolutely necessary to stick it in the 
> gac in order to be able to create it? This doesn't make sense to me 
> because then why bother with regasm? I had regasm first do the .tlb 
> thing and that didn't work so I generated the reg file and added it 
> manually. 


Ok, sorry, sorry. Jumped the gun. I take it all back. Apparently I only 
*thought* I copied the .Net assembly .dll into c:\Python22. I must not 
have because after messing around with everything else in the world (and 
learning all about the GAC and signing keys and such in the process) I 
went back and /again/ copied the assembly .dll into c:\Python22\ and of 
course this time all works just fine. Doh. Well, at least I learned a 
bunch of other stuff in the process.

Jens B. Jorgensen

"With a focused commitment to our clients and our people, we deliver value through customized technology solutions"