• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 466
  • Last Modified:

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.
0
bmutch
Asked:
bmutch
  • 10
  • 7
1 Solution
 
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
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
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
 
bmutchAuthor Commented:
aha, thank you very much. I think I'm finally good to go.
0
 
bmutchAuthor Commented:
excellent, thanks.
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 10
  • 7
Tackle projects and never again get stuck behind a technical roadblock.
Join Now