calling a dotnet com object created via COM class template from vb6 on user's machine

I have created a com object using the COM class template but what do I need to do to deploy it to other computers.
bmutchAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

bmutchAuthor Commented:
I put the dotnet com dll in the app folder, ran regasm on it successfully, and it still won't call the dll from the vb6 app.
0
bmutchAuthor Commented:
Well, I have it working, but in my calling app I had to use late-binding, is it possible to use early binding, ie.
dim dotnetclass as dotnetclass
... etc...
0
Bob LearnedCommented:
If you have the ProgID for the COM component, then you can use the CreateObject or GetObject calls for late-binding to COM classes.

Examples can be found here:

CreateObject Function (Visual Basic)  
http://msdn.microsoft.com/en-us/library/7t9k08y5(VS.80).aspx


Dim adoApp As Object
adoApp = CreateObject("ADODB.Connection")
 
 
   Dim xlApp As Object
    ' Replace string "\\MyServer" with name of the remote computer.
    xlApp = CreateObject("Excel.Application", "\\MyServer")
    MsgBox(xlApp.Version)

Open in new window

0
Python 3 Fundamentals

This course will teach participants about installing and configuring Python, syntax, importing, statements, types, strings, booleans, files, lists, tuples, comprehensions, functions, and classes.

bmutchAuthor Commented:
well, I really don't want to develop "blind" like that, I need early binding as I mentioned above, and I found a vs2003 template to create a c# page that will make a class that enabled this. But now I still need to know how to deploy this to clent computers. I ran regasm manually and it worked, but what is the best way to do it via some sort of "setup" program?
0
Bob LearnedCommented:
Geez, Monday morning blues (d'oh).

I read that comment incorrectly.  You want early-binding, and not late-binding.  Are you working with 1.1 or 2.0/3.5?
0
bmutchAuthor Commented:
I'm using 3.5, and only thing left to do is "register" the dotnet com componenet on client machines.
0
Bob LearnedCommented:
There is an option in the properties for an assembly:  Register = vsdraCOM
0
bmutchAuthor Commented:
Is this in the assembly's project or in a Setup and Deployment project to deploy the assembly. Is there any other way other than creating a Setup and Deployment project? Can I just run regasm directly (like when the calling program starts up somehow to check to see if the assembly is registered and if it isn't then run regasm- I don't know how to check to see if it is registered, com dll's are easy to check) Also, how do I find the path to regasm?

thanks.
0
Bob LearnedCommented:
What type of deployment are you talking about?  You could use a batch file to XCOPY deploy the assembly and run regasm.  Also, it doesn't matter if you run regasm, even if it is registered already, so you don't need to check.
0
bmutchAuthor Commented:
Where is the location of regasm, would it depend on the framework version running on the computer:?
0
Bob LearnedCommented:
Regasm is in the framework version-specific folder (i.e. C:\Windows\Microsoft.NET\Framework\v2.0.50727).
0
bmutchAuthor Commented:
this seems pretty messy:
Can a computer have multiple frameworks installed, ie, if you upgrade frameworks on a computer can it still use the old framework versions? In VS if I set a specific version as the "target" what happens if that version is not installed on a computer?
thanks.
0
Bob LearnedCommented:
You can have multiple frameworks installed, and each can work independently.  If you target a specific version of a .NET framework, then it must be present in order for the application to run correctly.  

You can require a particular version of the CLR runtime, with config settings:

App.config Examples
http://blogs.msdn.com/suzcook/archive/2004/05/14/132022.aspx
Forces the v1.0 CLR to be run. If the v1.0 CLR is not installed, the app will fail to run.
 
<?xml version ="1.0"?> 
 <configuration> 
    <startup> 
         <requiredRuntime version="v1.0.3705"/> 
         <supportedRuntime version="v1.0.3705"/> 
     </startup> 
 </configuration>

Open in new window

0
bmutchAuthor Commented:
I would think that if I am targeting 3.5 framework I would find the correct regasm.exe to use in that folder, but a search of my dev. computer shows regasm only in the v1.0.3705, v1.1.4322 and v2.0.50727 folders. Given this how do I find the correct regasm to run on the clinet computer.
thanks?
0
Bob LearnedCommented:
3.5 and 3.0 both still use the 2.0 folder, since the REGASM didn't change from 3.0 and 3.5.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
bmutchAuthor Commented:
aha, thank you very much. I think I'm finally good to go.
0
bmutchAuthor Commented:
excellent, thanks.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.