ERRO BC30560: [ô]CLASS[ô] IS AMBIGUOUS IN THE [ô]N

HIDDEN 22/05/2014 16:02:38
#438413
Prezados, criei uma classe chamada database.vb. Eis o código da bicha:

Imports MySql.Data.MySqlClient
Imports System.Data
Imports System.Data.Dataset
Imports System.Configuration
Imports System.Web.UI.Page
Imports System.Windows.Forms

Namespace ImobiliusDataAccess

Public Class ConexaoMySQL

Private conn As MySql.Data.MySqlClient.MySqlConnection
Private connString As String
Private mComando As New MySql.Data.MySqlClient.MySqlCommand
Private mDataAdap As New MySql.Data.MySqlClient.MySqlDataAdapter
Private mDataReader As MySql.Data.MySqlClient.MySqlDataReader

Sub New(ByVal Optional strConn As String=[Ô][Ô])
If strConn=[Ô][Ô] Then
connString = ConfigurationManager.ConnectionStrings([Ô]connGeral[Ô]).ConnectionString
Else
connString = strConn
End If
End Sub

Public Sub DBConectar()
If Not conn.State = ConnectionState.Open Then
conn = New MySqlConnection()
conn.ConnectionString = connString
conn.Open()
End If
End Sub

Public Sub DBDesconectar()
If Not conn.State = ConnectionState.Open Then
conn.Close()
conn.Dispose()
conn = Nothing
End If
End Sub

Public Function DBExecutaDataTable(ByVal SQLString As String) As DataTable
Dim mDataTable As New DataTable
Try
DBConectar()
mComando.CommandType = CommandType.Text
mComando.CommandText = SQLString
mComando.Connection = conn
mDataAdap.SelectCommand = mComando
mDataAdap.Fill(mDataTable)
mDataAdap.Dispose()
Return mDataTable
Catch ex As Exception
[ô]MessageBox.Show(ex.Message)
End Try
Return mDataTable
End Function

Public Function DBExecutarReader(ByVal SQLString As String) As MySqlDataReader
Try
DBConectar()
mComando.CommandType = CommandType.Text
mComando.CommandText = SQLString
mComando.Connection = conn
mDataReader = mComando.ExecuteReader()
mComando.Dispose()
Return mDataReader
Catch ex As Exception
[ô]MessageBox.Show(ex.Message)
End Try
Return mDataReader
End Function

Public Function DBExecutarQuery(ByVal SQLString As String) As MySqlCommand
Try
DBConectar()
mComando.CommandType = CommandType.Text
mComando.CommandText = SQLString
mComando.Connection = conn
Return mComando
Catch ex As Exception
[ô]MessageBox.Show(ex.Message)
End Try
Return mComando
End Function

End Class

End Namespace


Compilei com os seguintes parâmetros:

vbc /t:library /out:..\bin\DBImobilius.dll /r:System.dll /r:..\bin\MySql.Data.dll database.vb


A compilação ocorre sem problemas.

O código onde a classe é instanciada:

<%@ Page Language=[Ô]VB[Ô]%>
<%@ Import NameSpace=[Ô]ImobiliusDataAccess[Ô] %>

<script runat=[Ô]server[Ô]>
Public IsProgressB = True
Sub Page_Load(obj As Object, e as EventArgs)
Dim cn AS New ImobiliusDataAccess.ConexaoMySQL()
End Sub
</script>


Quando crio a instância
Dim cn AS New ImobiliusDataAccess.ConexaoMySQL()
da o erro:

Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: BC30560: [ô]ConexaoMySQL[ô] is ambiguous in the namespace [ô]ImobiliusDataAccess[ô].

Tem duas horas que estou amarrado nesse erro.

Alguém sabe me informar o que está acontecendo?
KERPLUNK 22/05/2014 16:55:49
#438419
Você tem duas classes chamadas ConexaoMySQL no mesmo namespace chamado [Ô]ImobiliusDataAccess[Ô]. O que conta é o nome que você dá na classe e não o nome do arquivo .vb
HIDDEN 23/05/2014 09:56:48
#438434
Pela definição do erro eu sabia que havia repetição do nome da classe, mas não conseguia achar o porque. Mas o problema era o seguinte: eu tinha minha classe .vb no diretório app_code, e o namespace contendo a classe numa dll localizada no diretório bin. Era isso que causava a ambiguidade de nomes. Eu removi os .vb do diretório app_code, deixando somente as dlls no diretório bin.

Funcionou.
Tópico encerrado , respostas não são mais permitidas