Avatar billede aslan Nybegynder
20. september 2003 - 18:48 Der er 18 kommentarer og
1 løsning

Compilere c# med web matrix?

Er det muligt at compilere C# med web matrix? Hvis ikke hvordan skal man så bare sig an når man arbejder med web matrix, C# og asp.net?
Avatar billede viciodk Praktikant
20. september 2003 - 19:01 #1
Avatar billede aslan Nybegynder
20. september 2003 - 19:24 #2
Men jeg kan stadig ikke få noget test kode til at virke jeg har denne C# fil:

namespace test1 {
    using System;

    public class CTest {

        public CTest() {
        }
        string udskriv()
        {
            return "hej dette er en test";
        }
    }
}


den forsøger jeg så at at oprette en object af på en asp.net side sådan her:

    void Page_Load()
    {
      test1.CTest obj = new test1.CTest();
    }

eller

    void Page_Load()
    {
      CTest obj = new CTest();
    }

men får samme fejl :

Kompileringsfejl
Beskrivelse: Der opstod en fejl under kompilering af en ressource, der er påkrævet ved behandling af denne anmodning. Læs følgende detaljer om fejlen, og foretag de nødvendige ændringer af kildekoden.

Fejlmeddelelse om kompileringsfunktion: CS0246: Typen eller navneområdenavnet 'test1' kunne ikke findes (mangler der et 'using'-direktiv eller en assemblyreference?)

Kildefejl:



Linje 25:    {
Linje 26:        hentDataFraDB();
Linje 27:        test1.CTest obj = new test1.CTest();
Linje 28:    }
Linje 29:

Har du nogen foreslag til fejlen?
Avatar billede aslan Nybegynder
20. september 2003 - 19:26 #3
jeg kan se at CTest.dll filen er oprettet?
Avatar billede repsak Nybegynder
20. september 2003 - 20:14 #4
noget tyder på at du ikke har lagt din .dll fil i /bin-mappen -right?
Avatar billede aslan Nybegynder
20. september 2003 - 20:39 #5
Det er rigtigt, troede den kunne finde ud af det selv, men jeg har lige forsøgt at ligge path til mappen med .dll filen, men det hjalp heller ikke?
Avatar billede repsak Nybegynder
20. september 2003 - 20:42 #6
filen skal ligge i bin mappen som skal ligge i roden
Avatar billede aslan Nybegynder
20. september 2003 - 20:44 #7
Jeg er ikke helt med på hvilken bin mappe du snakker om? Hva er stien til din bin mappe f.eks?
Avatar billede repsak Nybegynder
20. september 2003 - 20:45 #8
Avatar billede aslan Nybegynder
20. september 2003 - 20:55 #9
Ok jeg prøver lige at forklare situationen.

I mappen :
C:\Documents and Settings\aslan1\Skrivebord\Asp.Net\test1

har jeg en fil der hedder test.aspx og mappen bin som jeg lige har oprettet med .dll filen. Når jeg så forsøger at oprettet objektet får jeg samme fejl?
Avatar billede repsak Nybegynder
20. september 2003 - 20:59 #10
lyder umiddelbart ok - hvordan ser din kode ud?
Avatar billede aslan Nybegynder
20. september 2003 - 21:04 #11
CTest:

namespace bin {
    using System;

    public class CTest {

        public CTest() {
        }
        string udskriv()
        {
            return "hej dette er en test";
        }
    }
}


test:

<%@ Page Language="C#" Debug="true" %>
<script runat="server">

    void Page_Load()
    {
      CTest obj = new CTest();
    }

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <p>
        </p>
    </form>
</body>
</html>


Og fejlen som jeg får:

Serverfejl i programmet '/'.
--------------------------------------------------------------------------------

Kompileringsfejl
Beskrivelse: Der opstod en fejl under kompilering af en ressource, der er påkrævet ved behandling af denne anmodning. Læs følgende detaljer om fejlen, og foretag de nødvendige ændringer af kildekoden.

Fejlmeddelelse om kompileringsfunktion: CS0246: Typen eller navneområdenavnet 'CTest' kunne ikke findes (mangler der et 'using'-direktiv eller en assemblyreference?)

Kildefejl:



Linje 4:      void Page_Load()
Linje 5:      {
Linje 6:        CTest obj = new CTest();
Linje 7:      }
Linje 8: 


Kildefil: test.aspx    Linje: 6
Avatar billede repsak Nybegynder
20. september 2003 - 21:21 #12
Umiddelbare kommantare:
1) du bør da lægge al codebehind som dll:

using System;
namespace Test {
    public class CTest {
        string udskriv(){
            return "hej dette er en test";
        }
    }

  public class Side : Page{
          CTest reference = null;
          protected Label label;
      protected void page_load(...){
        reference = new CTest();
        label.Text = reference.udskriv();
      }
  }
}

2)
<%@ Page Language="C#" Debug="true" Inherits="Test.Side" %>
<html>
<head>
</head>
<body>
    <form runat="server">
        <asp:Label id="label" runat="server"></asp:Label>
    </form>
</body>
</html>
Avatar billede aslan Nybegynder
20. september 2003 - 21:26 #13
Hvordan skal jeg ligge de filer der? Jeg kunne godt bruge nogle kommentar...
Avatar billede repsak Nybegynder
20. september 2003 - 21:34 #14
//inkluderer klasser
using System;
using System.Web.UI;
using System.Web.UI.WebControls;

//definerer et namespace, som indeholder 2 klasser
namespace Test {
    public class CTest {
        string udskriv(){
            return "hej dette er en test";
        }
    }

//denne klasse repræsenterer din codebehind (derfor skal den arve fra Page)
  public class Side : Page{
          CTest reference = null;
          //en label på siden (skal være protected for at aspx-delen kan se den)
          protected Label label;

//din metode er flyttet fra .aspx til .cs
      protected void page_load(...){
        reference = new CTest();
  //sætter labeltexten til din streng
        label.Text = reference.udskriv();
      }
  }
}
//kompileres til dll

Dette er indtastet i hånden og ikke testet...
//Denne linje fortæller bla. at din kode arves fra Test.Side (som er en .dll)
<%@ Page Language="C#" Debug="true" Inherits="Test.Side" %>


den første fil skal som sagt compiles til .dll og ligge i /bin/Test.dll
den anden skal ligge i /Test.aspx
Avatar billede aslan Nybegynder
20. september 2003 - 22:02 #15
Jeg en masse fejl jeg ikke lige kan overskue.. Gider du ikke lige teste de filer selv, så får du 60 point oveni? Hva med :

public class Side : Page{

kan man det i c#? ikke noget der findes i java...
Avatar billede repsak Nybegynder
20. september 2003 - 22:12 #16
jeg tester det lige - nu er dette jo heller ikke java ;-)
: (kolon) er det samme som extends i Java
Avatar billede repsak Nybegynder
20. september 2003 - 22:19 #17
--------Test.cs------
using System;
using System.Web.UI;
using System.Web.UI.WebControls;

//definerer et namespace, som indeholder 2 klasser
namespace Test {
    public class CTest {
        public string udskriv(){
            return "hej dette er en test";
        }
    }

    //denne klasse repræsenterer din codebehind (derfor skal den arve fra Page)
    public class Side : Page{
        CTest reference = null;
        //en label på siden (skal være protected for at aspx-delen kan se den)
        protected Label label;

        //din metode er flyttet fra .aspx til .cs
        protected void Page_Load(object sender, EventArgs e){
            reference = new CTest();
            //sætter labeltexten til din streng
            label.Text = reference.udskriv();
        }
    }
}
-------------
kompiler ovenstående med:
csc.exe /t:library Test.cs
og læg den som /bin/Test.dll

-----test.aspx-------
<%@ Page Language="C#" Debug="true" Inherits="Test.Side" %>
<html>
<head>
</head>
<body>
    <form runat="server">
        <asp:Label id="label" runat="server"></asp:Label>
    </form>
</body>
</html>
----------

læg denne fil som /test.aspx

Så virker det
Avatar billede repsak Nybegynder
20. september 2003 - 22:22 #18
Avatar billede aslan Nybegynder
20. september 2003 - 22:28 #19
endelig virkede det... takker :-) opretter lige et nyt spørgsmål så du kan få de andre 60 point
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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