Gå til innhold

.NET Hva er det egentlig?


Anbefalte innlegg

Videoannonse
Annonse
  • 3 uker senere...

Visual Studio .Net = version 1.00 av .net

Visual Studio .Net 2003 = version 1.01 av .net (gjeldende versjon ute)

Visual Studio .Net 2005 = version 2.00 av .net

 

CLR (Common Language Routine), alle programmerings-språkene (Visual Basic, C++, C# osv.) bruker samme klassebiblioteker og samme datatyper (VB Integer er det samme som en C++ int osv) slik at kode skrevet i de forskjellige språkene kan fungere sammen lettere sammen.

 

Alle språkene gjør (nesten) alt det de andre kan, dermed er det kun syntaks som skiller språkene og ikke annet.

 

I .Net så bruker de en og JIT (Just-In Time Compiler) som er så og si det samme som de i Java kaller for en "Virtual machine" dermed så kan i prinsippet .Net kode kjøres på hvilken som helst platform. Noen har begynt på en Linux konvertering av .Net, men dette er noe som Microsoft selv ikke har gjort (sikkert med tanke på konkurranse).

 

.Net applikasjoner krever at brukeren har innstallert .Net Framework'et for at de skal kunne kjøre. Det finnes forskjellige versjoner av dette Framework'et (1.00, 1.01, 2.00 se øverst).

 

Du kan ha flere versjoner av Frameworket innstallert samtidig (f.eks både 1.00 og 1.01)

 

Prøver du å kjøre et program som er skrevet i 1.00 så vil .Net først prøve å finne 1.00 Framework'et på maskina, hvis ikke så vil den ta det som er tilgjengelig.

 

Merk at kode skrevet i 1.00 kan fungere annerledes hvis den kjører med f.eks 1.01 Framework'et.

Endret av Jarod_24
Lenke til kommentar

CLR = Common Language Runtime - som er noe lignende assembly

 

her er litt dissassembled .NET kode fra et av programma mine:

.class public auto ansi frmAbout
        extends [System.Windows.Forms]System.Windows.Forms.Form
 {
   .field private class [System.Windows.Forms]System.Windows.Forms.Button _btnOk
   .custom instance void [mscorlib]System.Runtime.CompilerServices.AccessedThroughPropertyAttribute::.ctor(string) = ( 01 00 05 62 74 6E 4F 6B 00 00 )                   // ...btnOk..
   .field private class [System.Windows.Forms]System.Windows.Forms.PictureBox _pctLogo
   .custom instance void [mscorlib]System.Runtime.CompilerServices.AccessedThroughPropertyAttribute::.ctor(string) = ( 01 00 07 70 63 74 4C 6F 67 6F 00 00 )             // ...pctLogo..
   .field private class [System.Windows.Forms]System.Windows.Forms.TextBox _txtAbout
   .custom instance void [mscorlib]System.Runtime.CompilerServices.AccessedThroughPropertyAttribute::.ctor(string) = ( 01 00 08 74 78 74 41 62 6F 75 74 00 00 )          // ...txtAbout..
   .field private class [System]System.ComponentModel.IContainer components
   .method public specialname rtspecialname 
           instance void  .ctor() cil managed
   {
     // Code size       17 (0x11)
     .maxstack  8
     IL_0000:  nop
     IL_0001:  ldarg.0
     IL_0002:  call       instance void [System.Windows.Forms]System.Windows.Forms.Form::.ctor()
     IL_0007:  nop
     IL_0008:  ldarg.0
     IL_0009:  callvirt   instance void AgroByte.frmAbout::InitializeComponent()
     IL_000e:  nop
     IL_000f:  nop
     IL_0010:  ret
   } // end of method frmAbout::.ctor

   .method family hidebysig strict virtual 
           instance void  Dispose(bool disposing) cil managed
   {
     // Code size       36 (0x24)
     .maxstack  8
     IL_0000:  nop
     IL_0001:  ldarg.1
     IL_0002:  brfalse.s  IL_0019

     IL_0004:  ldarg.0
     IL_0005:  ldfld      class [System]System.ComponentModel.IContainer AgroByte.frmAbout::components
     IL_000a:  brfalse.s  IL_0018

     IL_000c:  ldarg.0
     IL_000d:  ldfld      class [System]System.ComponentModel.IContainer AgroByte.frmAbout::components
     IL_0012:  callvirt   instance void [mscorlib]System.IDisposable::Dispose()
     IL_0017:  nop
     IL_0018:  nop
     IL_0019:  nop
     IL_001a:  ldarg.0
     IL_001b:  ldarg.1
     IL_001c:  call       instance void [System.Windows.Forms]System.Windows.Forms.Form::Dispose(bool)
     IL_0021:  nop
     IL_0022:  nop
     IL_0023:  ret
   } // end of method frmAbout::Dispose

dette henter du med Visual Studio.NET\SDK\V1.1\ildasm.exe

 

Det kan bli kryptert med Dotfuscator, og pluss public/private key.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...