Avatar billede Slettet bruger
23. februar 2006 - 09:29 Der er 26 kommentarer og
1 løsning

Class not defined

Hej

Jeg arbejder på at lærer vb.net og visual studio.

Jeg er ved at lave en funktion, som kan sende en mail.

Jeg har lavet et modul, som skal blive til en exe-fil. Den ser sådan her ud:

Imports Microsoft.VisualBasic
Imports MailFunktion

Module Module1

    Sub Main()
        Dim myOpgaveMail As New ClassMail
        myOpgaveMail.SendMail()
    End Sub

End Module

Så har jeg lavet min class, men visual studio siger at min classmail ikke er defineret?????
Min Classmail ser sådan her ud:


Imports Microsoft.VisualBasic
Imports Microsoft.VisualBasic
Imports System
Imports System.Data
Imports System.Data.OleDb
Imports System.Net.Mail

Namespace MailFunktion

    Public Class ClassMail

        Sub PlainText()
            'create the mail message
            Dim mail As New MailMessage()

            'set the addresses
            mail.From = New MailAddress("testSend@testSend.dk")
            mail.To.Add("Test@test.dk")

            'set the content
            mail.Subject = "This is an email"
            mail.Body = "this is the body content of the email."

            'send the message
            Dim smtp As New SmtpClient("192.167.0.1")
            smtp.Send(mail)

        End Sub 'PlainText

    End Class

End Namespace 'Mailfunktion
Avatar billede bernhof Nybegynder
23. februar 2006 - 10:47 #1
Du kalder myOpgaveMail.SendMail(), men jeg kan ikke umiddelbart finde en metode der hedder SendMail. Du har dog en der hedder PlainText. Prøv at skrive det istedet:

  myOpgaveMail.PlainText()
Avatar billede Slettet bruger
23. februar 2006 - 12:36 #2
Det har jeg prøvet nu, men det hjalp desværre ikke :-(

Den fejl jeg får i visual studio er: Type 'ClassMail' is not defined.

Nogen forslag?
Avatar billede bernhof Nybegynder
23. februar 2006 - 14:22 #3
Er det på linien

  Dim myOpgaveMail As New ClassMail

at du får fejlen?

Og det er først når du kompilerer at du får det at vide (compile-time), eller er der en blå bølget streg under fejlen, når du kigger i koden (design-time)?
Avatar billede Slettet bruger
23. februar 2006 - 14:38 #4
Der kommer en blåstreg under og jeg får en fejl i "Errolisten" som jeg har nederst på siden - er det et svar der kan bruges, eller har jeg misforstået noget?
Avatar billede bernhof Nybegynder
23. februar 2006 - 15:10 #5
Nej, den er god nok.

Prøv at højre-klikke på "ClassMail" i linien

  Public Class ClassMail

og vælg Synchronize Class View. Hvis Class View-vinduet ikke allerede var åbent, er det blevet åbnet. Højreklik på det valgte element i Class View-vinduet og vælg Copy.

Paste derefter ind her på eksperten og lad mig se, hvad der kommer ud af det.
Avatar billede Slettet bruger
23. februar 2006 - 15:19 #6
Jeg får ikke den mulighed frem når jeg højreklikker. Er der en anden måde jeg kan gøre det på?
Avatar billede bernhof Nybegynder
23. februar 2006 - 15:28 #7
Hvad har du ikke mulighed for? At vælge "Synchronize Class View" eller "Copy"?

I hvert fald er det nok Visual Studio .NET 2005 du benytter, har jeg ret?

I så fald, prøv at vælge menuen: "View" -> "Object browser"

I søgefeltet indtaster du ClassMail og trykker enter. Hvis den finder din klasse, højre-klik på den og vælg "Copy". Paste ind på eksperten.
Avatar billede bernhof Nybegynder
23. februar 2006 - 21:14 #8
Der skulle gerne stå noget i retning af:

  DinApplikation.MailFunktion.ClassMail

Hvis den hedder dette, så prøv det samme med Module1. Altså find den i object browser, og kopier teksten. Der skulle gerne stå:

  DinApplikation.Module1
Avatar billede Slettet bruger
24. februar 2006 - 11:03 #9
Hej

Jo du har ret - jeg bruger visual studio 2005.

Det er "Synchronize Class View", jeg ikke har mulighed for at vælge. Og når jeg søger på ClassMail, siger den at den ikke findes. Er det ikke underligt?
Avatar billede bernhof Nybegynder
24. februar 2006 - 12:05 #10
Jo, det vil jeg umiddelbart sige at det er.

Ligger ClassMail i samme projekt som Module1 ?

Prøv desuden at gå op i "View" -> "Class View" og se om du i det vindue kan finde ClassMail og Module1. Hvis du kan, højre-klik da på hver af dem og vælg Copy og paste herind.
Avatar billede Slettet bruger
24. februar 2006 - 12:44 #11
Jeg kan finde module1, men ikke classMail. Module1 ser sådan her ud:

MailFunktion.Module1

Jeg kom lige til at tænke på at det er ikke nødvendigt at filnavnet og classnavnet er ens vel?
Avatar billede bernhof Nybegynder
24. februar 2006 - 13:06 #12
Nej, det er ikke nødvendigt.

Hvorfor er det ClassMail ligger i namespacet "MailFunktion" ? Hvad hedder din applikation ? Hvis den hedder "MailFunktion" og ClassMail er en del af denne applikation, vil ClassMail automatisk blive placeret i namespacet "MailFunktion". Derfor, hvis du derudover også placerer

  Namespace MailFunktion
  ...
  End Namespace

omkring ClassMail klassen, vil den ende med at ligge i namespacet "MailFunktion.MailFunktion".

Se derfor om det virker at skrive

  Imports MailFunktion.MailFunktion

istedet for

  Imports MailFunktion

i Module1 koden.
Avatar billede Slettet bruger
24. februar 2006 - 13:34 #13
Hmm - applikation-navn, er det navnet på filen?
Avatar billede bernhof Nybegynder
24. februar 2006 - 14:26 #14
Navnet på din solution. Prøv under alle omstændigheder det, jeg foreslår.
Avatar billede Slettet bruger
24. februar 2006 - 14:49 #15
Det er testet og det ændrer desværre ikke noget :-(
Avatar billede bernhof Nybegynder
24. februar 2006 - 14:52 #16
Det undrer mig VIRKELIG meget, at du ikke kan finde ClassMail i dit Class View. Det må jeg sige...

Du fik aldrig svaret på følgende: Ligger ClassMail i samme projekt som Module1 ?
Avatar billede Slettet bruger
27. februar 2006 - 10:17 #17
Hej

Ja - det gør det.

Jeg er jo altså helt ny i både visual studio og VB.NET (ja ny med kodning i det hele taget), så måske det er noget helt banalt...
Avatar billede bernhof Nybegynder
27. februar 2006 - 10:46 #18
Hehe, det har jeg også mistanke om. Problemet er bare, at jeg ikke umiddelbart kan se, hvad der går galt ud fra det, som du har skrevet her.

Ligger ClassMail klassen i en fil for sig? Hvis den gør det, prøv da at højre-klikke på den i Solution-vinduet (oversigten over filer og projekter i din solution - vinduet ligger højst sandsynligt til højre på skærmen). Hvis du kan vælge "Include in project", prøv da at klikke på den og se hvad der sker (klik IKKE, hvis der står "Exclude from project") ..
Avatar billede Slettet bruger
27. februar 2006 - 14:34 #19
Jeg fik trykket include på filen, men classmail er stadig ikke defineret. Heller ikke efter jeg har rebuildet igen.
Avatar billede bernhof Nybegynder
27. februar 2006 - 14:46 #20
Prøv at fjerne

  Namespace MailFunktion

og

  End Namespace

fra ClassMail filen. Se om det bliver bedre.
Avatar billede Slettet bruger
27. februar 2006 - 14:56 #21
Det blev så absolut bedre :-)

Kan jeg nu bare tage filen mailfunktion.exe og bruge eller skal der noget særligt til for at flytte den?
Avatar billede bernhof Nybegynder
27. februar 2006 - 15:05 #22
hvis du kompilerer (dvs. builder/rebuilder) kan du bare taget exe-filen fra /bin mappen (og evt. dll-filer der ligger i samme mappe) og kopiere hen på en anden maskine, så kører det (forudsat vedkommende har .NET framework 2.0 installeret).
Avatar billede bernhof Nybegynder
27. februar 2006 - 15:08 #23
.NET framework 2.0 kan downloades fra Microsoft her:

http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&DisplayLang=en

eller installeres via Windows Update.
Avatar billede Slettet bruger
27. februar 2006 - 15:27 #24
OK - tak.

Men i min /bin mappe under projektet ligger der to mappe hvor der i den der hedder /debug ligger min mailfunktoin.exe.

Når jeg kører den, kommer der blot en fejl om at "MailFunktion har fundet en fejl og afsluttes. Vi beklager ulejligheden" og så kan jeg få lov til at sende en fejelrapport til Microsoft?
Avatar billede bernhof Nybegynder
28. februar 2006 - 09:47 #25
Det er underligt, for det er den fil den kører, når du kører programmet fra Visual Studio.

Prøv at vælge "Release" i drop-down boksen øverst i Visual Studio 2005 hvor der lige nu sikker står "Debug". Rebuild din applikation. Prøv at køre den .exe fil der ligger under /bin/Release.

Hvis den ikke virker, så har jeg ingen anelse om, hvad der går galt. For det virker hos mig :-(
Avatar billede bernhof Nybegynder
28. februar 2006 - 11:12 #26
Tak for point, forresten :-)
Avatar billede Slettet bruger
02. marts 2006 - 09:50 #27
Selv tak.

Jeg har ikke mulighed for "Release".
Men det er nu underligt at det ikke virker :-(
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
Kategori
Kurser inden for grundlæggende programmering

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