Avatar billede _et Praktikant
17. september 2013 - 09:53 Der er 11 kommentarer og
1 løsning

Anvendelse af DLL i VS 2008

Hej.

Jeg skal bruge et pop3 modul og har fundet dette:
http://mailsystem.codeplex.com/

Det er "en" dll og jeg tilføjer den ved højre klik, Add Reference - under References i Solution Explorer.

Jeg får et gult ! over references og når jeg tilføjer using direktiv kan den ikke finde namespace

Se:
using ActiveUp.Net.Pop3;
namespace Server
{
  static class Pop3Client
  {
      [DllImport("ActiveUp.Net.Pop3.dll")]
      public static extern string APOPConnect(string host, string user, string pass);
  }


Der er noget der siger mig at jeg mangler at tilføje noget omkring denne dll et eller andet sted i projektet - men kan ikke komme på hvad det kan være.

Og lige et lille under spørgsmål:
Hvordan deklarer man en constructor ??
      //[DllImport("ActiveUp.Net.Pop3.dll")]
      //public static extern Pop3Client();
virker ikke!!!

Mvh
Teddy
Avatar billede Syska Mester
17. september 2013 - 10:08 #1
Du skal ikke bruge DllImport ... ved ikke hvor du har den ide fra.

Har du kigget på deres samples? Har du prøvet at download dem? Har du prøvet at køre dem?

http://mailsystem.codeplex.com/SourceControl/latest
Avatar billede lasserasch Juniormester
17. september 2013 - 10:11 #2
Visual Studio 2008 ??? Er der stadig folk som anvender det ? :-) Hold da op.....


Anyway, hvis din refererede DLL er bygget i en anden version af .Net framework end den din applikation bygges til, så vil du opleve det scenarie som du bekriver.


Ex.: dit pop3 modul er skrevet til .net 4.5, mens du bygger din applikation til .net 4.0 eller måske endda til 2.0.

Det er 99% sikkert derfor du får en fejl.

Og få nu opgraderet til VS 2012 :-)


Mvh.
Lasse
Avatar billede lasserasch Juniormester
17. september 2013 - 10:14 #3
Men han skriver jo faktisk også at han har importeret den i løsningen.... Og som jeg læser det, så virker det stadig ikke derefter.

Men ja, slet det der DLLImport hejs.....
Avatar billede _et Praktikant
17. september 2013 - 10:23 #4
Jeg har desværre ikke lige umiddelbart mulighed for VS2012 da det ikke er mig der betaler..

Har fjernet dll import..

Der skal ikke configureres andre steder end add reference samt using ActiveUp..... Vel?
Avatar billede Syska Mester
17. september 2013 - 10:30 #5
Jeg kunne godt frygte at hans DLL er compiled til .NET 4.0 og VS 2008 har kun support for 3.5 ... ergo, det vil aldrig virke: http://en.wikipedia.org/wiki/Microsoft_Visual_Studio#Visual_Studio_2008

Du kan måske hente hans 2009 version derinde på siden og håbe på det virker med .NET 3.5 hvilket jeg tror chancen er rimelig stor for.

mvh
Avatar billede Syska Mester
17. september 2013 - 10:31 #6
og med VS 2013 lige på trapperne :-)
Avatar billede lasserasch Juniormester
17. september 2013 - 10:33 #7
Nej. Men tjek nu .net Build targets ;-) hvis du bilder din applikation til en version som ligger under den version pop3 komponenten er bygget til så er det dit problem. Så det er det højest sandsynligt
Avatar billede lasserasch Juniormester
17. september 2013 - 10:37 #8
Iøvrigt findes det masser af gratis versioner af vs på nettet. Og hvis du hat brug for de professionelle features, så må chefen bare punge ud :-)

At bruge vs2008 er vel det samme som at sidde og arbejde på en Windows 2000 maskine. Håbløst forældet....

:-)
Avatar billede Syska Mester
17. september 2013 - 10:37 #9
Lige tjekket ... kræver .NET 4.0
Avatar billede arne_v Ekspert
18. september 2013 - 04:14 #10
For lige at pinde det ud for senere laesere.

.dll filer kan vaere flere forskellige ting:
* saakaldte Win32 DLL'er med native kode og C/C++ API
* .NET assemblies med CLR kode og .NET API
* COM DLL'er (herunder scriptable COM og de nye WinRT COM)

Win32 DLL'er bruges via DllImport.

.NET assemblies bruges via ref til build.

DllImport virker ikke i dette tilfaelde fordi det er en .NET assembly.

.NET har samme regel som saa mange andre eenvironments: en EXE bygget til version X kan bruge en DLL bygget til version Y hvis X >= Y.

En EXE bygget til .NET 3.5 kan derfor ikke bruge en DLL bygget til 4.0.

Men det omvendte kunne godt lade sig goere, hvorfor det er meget paent at bygge sine DLL med den aeldste .NET version som kan understoettes.

Der er foelgeden sammenhaenge mellem VS og .NET versioner:

VS 2002 = .NET 1.0
VS 2003 = .NET 1.1
VS 2005 = .NET 2.0
VS 2008 = .NET 3.5
VS 2010 = .NET 4.0
VS 2013 = .NET 4.5

saa VS 2008 er altsa .NET 3.5 som er for gammel til DLL bygget med .NET 4.0.
Avatar billede _et Praktikant
02. oktober 2013 - 07:39 #11
Tak til Arne for  den yderligere forklaring
Avatar billede arne_v Ekspert
02. oktober 2013 - 15:02 #12
og saa er der fejl i det

:-)

VS 2013 = .NET 4.5

skal vaere

VS 2012 = .NET 4.5
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