Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations SkipVought on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Building COM+ Server From Command Line

Status
Not open for further replies.

poruchikN

Programmer
Feb 12, 2004
14
0
0
LT
Hi!

I've got a problem building C# COM+ server from the command line.

I enter:

sn -k keyfile.snk

csc /r:System.EnterpriseServices.dll /t:library /out:CMDSimpleServer.dll SimpleCMD.cs AssemblyInfo.cs

gacutil /i CMDSimpleServer.dll

regsvcs CMDSimpleServer.dll

When I try to use my servet in VB:

Dim App As New SimpleCMD
MsgBox App.MyFunction

I get message "Object reference not set to an instance of an object."

Everything works fine when building with Visual Studio

Code:

-----------------SimpleCMD.cs----------------------

using System;
using System.EnterpriseServices;
using System.Runtime.InteropServices;

namespace CMDServer
{
public interface ISimpleCMD
{
int MyFunction();
}

[ClassInterface(ClassInterfaceType.AutoDual)]
public class SimpleCMD: ServicedComponent,ISimpleCMD
{
public SimpleCMD() {}
public int MyFunction()
{
return 5;
}
}
}

------------------AssemblyInfo.cs---------------------

using System.Reflection;
using System.Runtime.CompilerServices;
using System.EnterpriseServices;

[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

[assembly: AssemblyVersion("1.0.*")]

[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("keyfile.snk")]
[assembly: AssemblyKeyName("")]

[assembly: ApplicationName( "C# CMD Compiled Server" )]
[assembly: ApplicationActivation( ActivationOption.Server )]
[assembly: ApplicationAccessControl(false ) ]

----------------------------------------------------

Thanks in advance for help.


 
Does your COM+ component show up in the COM+ explorer snap-in?

Chip H.


____________________________________________________________________
If you want to get the best response to a question, please read FAQ222-2244 first
 
Yes, it does. I can see, configure, start and shut down it in COM+ explorer.
I also can see it in VB component explorer and choose methods from coding assistant while typing.
But when I try to call a method, the "Object reference not set to an instance of an object." message arises.
Any ideas ?
Thanks for taking part.


 
I don't see anything wrong -- you're using a method to return the value 5, not a property (properties in COM+ are a bad idea) -- you're signing your assembly by specifying the keyfile in the assemblyinfo.cs (did you try it with the assembly linker al.exe?), you're specifying a dual interface on the method attribute.

The only thing I might suggest is that you put the Interface class in it's own file, or possibly in it's own assembly.

Chip H.


____________________________________________________________________
If you want to get the best response to a question, please read FAQ222-2244 first
 
Hello,
I folloved your advice, but it didn't help :(
What else can I try ?

Thank you for help.





 
No clue.
Maybe someone else here can help.

Chip H.


____________________________________________________________________
If you want to get the best response to a question, please read FAQ222-2244 first
 
Wouch!
All I needed to do was

Dim App As Object
Set App = CreateObject("ProgID")
MsgBox App.MyFunction

I shall find out whats the difference...
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top