sexta-feira, 20 de fevereiro de 2009

Criando componentes COM+ com C#

Ao contrário do que parece, o processo para criação de um COM+ usando C# é bem tranquilo. Não tão tranquilo quanto no famoso VB6, mas é simples.

Para isso crie um novo projeto Class Library e utilize o pacote (alguns preferem chamar de namespace) System.EnterpriseServices.

Agora devemos especificar a transação requisitada pelo componente. Para isso coloque a seguinte linha antes da declaração de sua classe:

[Transaction(TransactionOption.Required)]

Sua classe deverá herdar a ServicedComponent:

public class COMplus : ServicedComponent

Agora vem a parte que pode dar um pouco mais de trabalho: Criar uma chave de assinatura.

1º Acrescente a seguinte linha ao arquivo de informações do Assembly (AssemblyInfo.cs):

[assembly: AssemblyKeyFileAttribute("..\\..\\snEnterprise.snk")]

2º Execute o prompt de comando do Visual Studio (Iniciar > Todos os programas > Microsoft Visual Studio 2008 > Visual Studio Tools > Visual Studio 2008 Command Prompt) e digite a seguinte linha:

sn.exe -k c:\ProjetoCOMplus\snEnterprise.snk

Agora é só compilar e registrar a DLL. Aí entra, digamos assim, 'o segredo'. As DLL's COM+ em C# não são registradas no padrão regsvr32 e sim utilizando o regasm que vem no Framework .Net.

Para registrar sua DLL, no mesmo prompt de comando aberto anteriormente digite:

regasm c:\ProjetoCOMplus\bin\Debug\Arquivo.dll /tlb /codebase

Pronto. Seu componente está criado e registrado. Dessa forma seu código pode ser tranquilamente utilizado em outras plataformas de desenvolvimento como ASP e Delphi.