DLL VB.NET X VB6

MKING 02/08/2010 16:38:43
#349190
Meus caros, criei uma dll em vb.net (minha primeira), mas ao adicionar no vb6 ele só me deixa referenciar o arquivo .tlb e qndo levo pra outra máquina ele da erro de active x, alguém já passou por isso e tem alguma dica ?
NETMANIA 02/08/2010 17:20:24
#349198
Eu passei por isso. Eu tive que criar ela como se fosse uma DLL COM+ e instalar ela no Serviço de Componentes do Windows.
MKING 02/08/2010 18:39:13
#349216
NETMANIA, podes me dar uma luz sobre como criar essa DLL COM+ ? e também de como instalar ela como serviço de componente do Windows ?
Estou extremamente apertado com isso, tenho que entregar amanhã, ou é encarcada no desenvolvedor dinovo rsrs

valew
PAVILLION 02/08/2010 20:26:50
#349224
MKING...

Não sei muita coisa de VB6, mas dei uma olhada e achei um link que talvez
te ajude...Experimenta:

Como usar uma dll .Net no VB6
MKING 03/08/2010 11:16:26
#349265
Cara, eu olhei esse exemplo, mas não me serviu muito, pq nos dois casos funcionou igual ......

alguém teria mais alguma dica ???
IRRV 03/08/2010 13:47:13
#349281
O que vc precisa fazer é criar interfaces....
Se nao existe uma interface da sua classe, o GAC nao consegue gerenciar a dll como COM+.

Na verdade o processo é meio chato mas eu consegui fazer funcionar criando interfaces genericas, e utilizando atributos nas classes.
Veja como ficou uma classe pronta

 
Imports System.ComponentModel

<ComClass(Adicionais.ClassId, Adicionais.InterfaceId, Adicionais.EventsId)> _
Public Class Adicionais
Public Const ClassId As String = [Ô]6DB79AF2-F661-44AC-8458-62B06BFDD9E1[Ô]
Public Const InterfaceId As String = [Ô]EDED909C-9271-4670-BA32-109AE917B1D1[Ô]
Public Const EventsId As String = [Ô]17C731B8-CE61-4B5F-B114-10F3E46153A1[Ô]

Dim _Obs_Fixa1 As String
Public Property Obs_Fixa1() As String
Get
Return _Obs_Fixa1
End Get
Set(ByVal value As String)
_Obs_Fixa1 = value
End Set
End Property
Dim _Obs_Fixa2 As String
Public Property Obs_Fixa2() As String
Get
Return _Obs_Fixa2
End Get
Set(ByVal value As String)
_Obs_Fixa2 = value
End Set
End Property
Dim _Obs_Fixa3 As String
Public Property Obs_Fixa3() As String
Get
Return _Obs_Fixa3
End Get
Set(ByVal value As String)
_Obs_Fixa3 = value
End Set
End Property
Dim _Obs_Fixa4 As String
Public Property Obs_Fixa4() As String
Get
Return _Obs_Fixa4
End Get
Set(ByVal value As String)
_Obs_Fixa4 = value
End Set
End Property
End Class


Depois disso vc tem que registrar a dll no GAC, no meu caso faço isso no Setup pois o INNO SETUP registra pra mim.
Se preferir registrar via codigo pesquise na net que vc acha como fazer.
Esta funcionando perfeitamente.

abraço
Igor
MONCELINE 31/08/2010 14:43:49
#351828
Por favor, estou tentando gerar uma dll a partid do vb.net express 2008 pórém ele apenas gera a extensão dll e pdb. Não sei o que estou fazendo de errado mas o arquivo tlb não está gerando.

Agradeço se alguem puder me esclarecer.
TECLA 31/08/2010 20:28:57
#351882
Poste seu código no tópico.
MONCELINE 01/09/2010 12:57:31
#351933
Oi tecla, estou tentando implantar no meu erp a nfe em vb.net do pessoal aqui . deixei as classes apenas , a dll eh gerada mas sem o arquivo *.tlb.
Eu utilizei o código abaixo mas a verdade é que estou perdida nessa parte do vb.net

Imports System.Runtime.InteropServices
Imports system.Security.Permissions.FileIOPermission
Imports System.Net
Imports Microsoft.Win32
DUHHH 01/09/2010 15:13:12
#351944
MKING Simples de solucionar

coloca a dll + o tlb no system32

no prompt

entra na pasta windows\microsoft.net\framework\v2.0.50727 ai quando tiver dentro desta pasta se vai escrever

regasm unidade_de_disco\system32
omedadll.dll /codebase

Isso vai funcionar!
MONCELINE 01/09/2010 17:42:01
#351963
criei uma classe apenas ,segue abaixo:
Imports System.Security.Cryptography.Xml
Imports System.Xml
Imports System.Security.Cryptography.X509Certificates

Public Module CertificadoDigital
Public Function Assinar(ByVal docXML As XmlDocument, ByVal pUri As String, ByVal pCertificado As X509Certificate2) As XmlDocument
Try
[ô] Load the certificate from the certificate store.
Dim cert As X509Certificate2 = pCertificado

[ô] Create a new XML document.
Dim doc As New XmlDocument()

[ô] Format the document to ignore white spaces.
doc.PreserveWhitespace = False

[ô] Load the passed XML file using it[ô]s name.
doc = docXML

[ô] Create a SignedXml object.
Dim signedXml As New signedXml(doc)

[ô] Add the key to the SignedXml document.
signedXml.SigningKey = cert.PrivateKey

[ô] Create a reference to be signed.
Dim reference As New Reference()
[ô] pega o uri que deve ser assinada
Dim _Uri As XmlAttributeCollection = doc.GetElementsByTagName(pUri).Item(0).Attributes
For Each _atributo As XmlAttribute In _Uri
If _atributo.Name = [Ô]Id[Ô] Then
reference.Uri = [Ô]#[Ô] & _atributo.InnerText
End If
Next

[ô] Add an enveloped transformation to the reference.
Dim env As New XmlDsigEnvelopedSignatureTransform()
reference.AddTransform(env)

Dim c14 As New XmlDsigC14NTransform()
reference.AddTransform(c14)

[ô] Add the reference to the SignedXml object.
signedXml.AddReference(reference)

[ô] Create a new KeyInfo object.
Dim keyInfo As New KeyInfo()

[ô] Load the certificate into a KeyInfoX509Data object
[ô] and add it to the KeyInfo object.
keyInfo.AddClause(New KeyInfoX509Data(cert))

[ô] Add the KeyInfo object to the SignedXml object.
signedXml.KeyInfo = keyInfo

[ô] Compute the signature.
signedXml.ComputeSignature()

[ô] Get the XML representation of the signature and save
[ô] it to an XmlElement object.
Dim xmlDigitalSignature As XmlElement = signedXml.GetXml()

[ô] Append the element to the XML document.
doc.DocumentElement.AppendChild(doc.ImportNode(xmlDigitalSignature, True))


If TypeOf doc.FirstChild Is XmlDeclaration Then
doc.RemoveChild(doc.FirstChild)
End If

Return doc
Catch ex As Exception
Throw New Exception([Ô]Erro ao efetuar assinatura digital, detalhes: [Ô] & ex.Message)
End Try
End Function

[ô]BUSCA CERTIFICADOS INSTALADOS SE INFORMADO UMA SERIE BUSCA A MESMA
[ô]SE NÃO ABRE CAIXA DE DIALOGOS DE CERTIFICADO
Public Function SelecionarCertificado(ByVal CerSerie As String) As X509Certificate2
Dim certificate As New X509Certificate2
Try
Dim certificatesSel As X509Certificate2Collection
Dim store As New X509Store([Ô]MY[Ô], StoreLocation.CurrentUser)
store.Open(OpenFlags.OpenExistingOnly)
Dim certificates As X509Certificate2Collection = store.Certificates.Find(X509FindType.FindByTimeValid, DateTime.Now, True).Find(X509FindType.FindByKeyUsage, X509KeyUsageFlags.DigitalSignature, True)
If (CerSerie = [Ô][Ô]) Then
certificatesSel = X509Certificate2UI.SelectFromCollection(certificates, [Ô]Certificados Digitais[Ô], [Ô]Selecione o Certificado Digital para uso no aplicativo[Ô], X509SelectionFlag.SingleSelection)
If (certificatesSel.Count = 0) Then
certificate.Reset()
Throw New Exception([Ô]Nenhum certificado digital foi selecionado ou o certificado selecionado está com problemas.[Ô])
Else
certificate = certificatesSel.Item(0)
End If
Else
certificatesSel = certificates.Find(X509FindType.FindBySerialNumber, CerSerie, True)
If (certificatesSel.Count = 0) Then
certificate.Reset()
Throw New Exception([Ô]Certificado digital não encontrado[Ô])
Else
certificate = certificatesSel.Item(0)
End If
End If
store.Close()
Return certificate
Catch exception As Exception
Throw New Exception(exception.Message)
Return certificate
End Try
End Function
End Module


Salvei como class library .Todos dizem que tenho que marcar a opção Register for COM Interop, porém não existe esta na minha versão (vb 2008 express).
tem a opção MAKE ASSEMBLY COM-VISIBLE que já marquei também.mas continua sem gerar o arquivo *.tlb
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas