Avatar billede fuldstop Nybegynder
24. april 2013 - 09:18 Der er 3 kommentarer og
1 løsning

Warning på namespace fra compiler (vbc - framework 4.0)

Jeg prøver, lidt for sjovt, at compile en vb-fil (test.vb) lavet i notepad, ved brug af den medfølgende compiler (vbc) i .net (framework 4.0), og bruger følgende kommando i en bat-fil "vbc /target:library c:\inetpub\wwwroot\Diverse\test.vb"

Dette fungerer også fint ved nedenstående i vb-filen:


Imports Microsoft.VisualBasic

Public Class HW
    Public Function HWO
        return ("Hello World")
    End Function
End Class

Men tilføjer jeg endnu en klasse til ovenstående i vb-filen, får jeg en warning på det importerede namespace (System.Data.OleDb), eller manglende importerede namspace:

Imports Microsoft.VisualBasic
Imports System.Data.OleDb

Public Class HW
    Public Function HWO
        return ("Hello World")
    End Function
End Class

Public Class HW1
    Public Function HWO1
        Dim strConnection, strSQL as String
    Dim objConnection as OledbConnection
    Dim objCommand as OledbCommand
    Dim dr as OledbDataReader
    Dim sb1 As New Stringbuilder
    strConnection = ("Provider=SQLNCLI11;Server=XXX\SQLEXPRESS;Database=XXX;Trusted_Connection=yes")
    objConnection = New OledbConnection(strConnection)
    objConnection.Open
   
    strSQL = "Select * From testdb"
   
    objCommand = New OleDbCommand(strSQL, objConnection)
    dr = objCommand.ExecuteReader()
    While (dr.Read())
    sb1.Append (dr("id") & " " & dr("tekst") & "<br>")
    End While

    return (sb1.ToString)

    dr.Close()
    objConnection.Close()
    strSQl = Nothing
    dr = Nothing
    objConnection = Nothing
    objCommand = Nothing
    End Function
End Class


Fejl fra compileren:

Microsoft (R) Visual Basic Compiler version 11.0.50709.17929
Copyright (c) Microsoft Corporation.  All rights reserved.

c:\inetpub\wwwroot\Diverse\test.vb(3) : warning BC40056: Namespace or type speci
fied in the Imports 'System.Data.OleDb' doesn't contain any public member or can
not be found. Make sure the namespace or the type is defined and contains at lea
st one public member. Make sure the imported element name doesn't use any aliase
s.

Imports System.Data.OleDb
        ~~~~~~~~~~~~~~~~~
c:\inetpub\wwwroot\Diverse\test.vb(14) : error BC30002: Type 'OledbConnection' i
s not defined.

    Dim objConnection as OledbConnection
                        ~~~~~~~~~~~~~~~
c:\inetpub\wwwroot\Diverse\test.vb(15) : error BC30002: Type 'OledbCommand' is n
ot defined.

    Dim objCommand as OledbCommand
                      ~~~~~~~~~~~~
c:\inetpub\wwwroot\Diverse\test.vb(16) : error BC30002: Type 'OledbDataReader' i
s not defined.

    Dim dr as OledbDataReader
              ~~~~~~~~~~~~~~~
c:\inetpub\wwwroot\Diverse\test.vb(17) : error BC30002: Type 'Stringbuilder' is
not defined.

    Dim sb1 As New Stringbuilder
                  ~~~~~~~~~~~~~
c:\inetpub\wwwroot\Diverse\test.vb(19) : error BC30002: Type 'OledbConnection' i
s not defined.

    objConnection = New OledbConnection(strConnection)
                        ~~~~~~~~~~~~~~~
c:\inetpub\wwwroot\Diverse\test.vb(24) : error BC30002: Type 'OleDbCommand' is n
ot defined.

    objCommand = New OleDbCommand(strSQL, objConnection)
                    ~~~~~~~~~~~~

Det virker lidt som om at der er problemer med at importere namespace, eller hvor i ligger fejlen?
Avatar billede fuldstop Nybegynder
24. april 2013 - 11:46 #1
Ok  fandt ud af det. Der skulle tilføjes en reference til namespacet i kommandolinjen til compileren.

Samt tilføje den fulde sti til klassen for stringbuilderen

Dim sb1 As New System.Text.Stringbuilder
Avatar billede arne_v Ekspert
24. april 2013 - 15:07 #2
Du skal lave en ref til assembly, og normalt hedder assemblies det samme som namespace, men altsaa to ting.
Avatar billede arne_v Ekspert
24. april 2013 - 15:08 #3
Med:

Imports System.Text

vil du undgaa at skulle angive fuld navn paa StringBuilder
Avatar billede fuldstop Nybegynder
24. april 2013 - 20:02 #4
Hej Arne

Tak for input. Findes der nogle regler for hvornår man skal compile sin codebehind. Så vidt jeg har forstået compiler man gerne sit codebehind ved web applicationer på forhånd, mens man ved websites lader systemet compile on the fly?

Er der fordele/ulemper ved at compile codebehind filen på forhånd til en dll-fil?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester