Bonjour,
J'ai développé un simple composant COM+ (une interface et une classe qui l'implémente). La classe qui implémente l'interface doit dériver de la classe ServicedComponent.
Lorsqu'elle ne dérive pas de ServicedComponent, lors de l'enregistrement de la dll produite dans le COM+ Directory avec la commande
En remarquant que l'enregistrment dans le GAC s'est bien passé, l'erreur (Bref l'avertissement qui empêche que mon objet COM+ se retrouve dans les applications COM+ de mon système) suivante survient :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Microsoft (R) .NET Framework Services Installation Utility Version 2.0.50727.42
Copyright (c) Microsoft Corporation.  All rights reserved.
Avertissement : Aucune classe dérivée de ServicedComponent n'a été trouvée dans
l'assembly.
(Utilisez RegAsm pour inscrire les types ComVisible.)
Lorsque je fait dérivée la classe par ServicedComponent, c'est cette autre erreur qui survient :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
L'exception System.EnterpriseServices.RegistrationException n'a pas été gérée
  Message="Des classes dérivées de ServicedComponent non valides ont été trouvées dans l'assembly.\r\n(Les classes doivent être de type Public, Concrete, avoir un constructeur par défaut public, et répondre à toutes les autres conditions de ComVisibility)"
  Source="System.EnterpriseServices"
  StackTrace:
       à System.EnterpriseServices.RegistrationDriver.InstallAssembly(RegistrationConfig regConfig, Object obSync)
       à System.EnterpriseServices.RegistrationHelper.InstallAssemblyFromConfig(RegistrationConfig& regConfig)
       à System.EnterpriseServices.RegistrationHelper.InstallAssembly(String assembly, String& application, String partition, String& tlb, InstallationFlags installFlags)
       à System.EnterpriseServices.RegistrationHelper.System.EnterpriseServices.Thunk.IThunkInstallation.DefaultInstall(String asm)
       à System.EnterpriseServices.Thunk.Proxy.RegisterAssembly(Assembly assembly)
       à System.EnterpriseServices.Thunk.Proxy.LazyRegister(Guid id, Type serverType, Boolean checkCache)
       à System.EnterpriseServices.Thunk.Proxy.CoCreateObject(Type serverType, Boolean bQuerySCInfo, Boolean& bIsAnotherProcess, String& uri)
       à System.EnterpriseServices.ServicedComponentProxyAttribute.CreateInstance(Type serverType)
       à System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(Type serverType, Object[] props, Boolean bNewObj)
       à com.soh.complus.COMClient.Program.Main(String[] args) dans D:\zsoh\Thesis\dotNet\Projects\com.soh.complus2\com.soh.complus.COMClient\Program.cs:ligne 13
       à System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
       à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       à System.Threading.ThreadHelper.ThreadStart()
je ne sais quel put être le problème.