Visual studio reference probleem

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 07-07 22:11
Ik heb hier een project met een reference naar een ActiveX dll. De dll is een 'Self Registering' dll en voor de geinteresseerde, het is een dll waarmee je geavanceerde dingen in Outlook kan doen. (Redemption)

Nu heb ik ruzie met Visual Studio, want elke keer dat ik mijn project wil compileren in Visual Studio krijg ik de volgende melding:
Error 12 Cannot register assembly "C:\AMF3000\OutlookConnect\OutlookConnectv2.dll". Could not load file or assembly 'Interop.Redemption, Version=4.2.0.0, Culture=neutral, PublicKeyToken=7cb0c22fbff85059' or one of its dependencies. Het systeem kan het opgegeven bestand niet vinden. OutlookConnectv2
Het enige wat ik kan doen is Visual Studio afsluiten, daarna de dll opnieuw installeren dmv van Regsvr32.dll, het project openen en vervolgens kan ik weer compileren. Alleen nu kan ik mijn applicatie niet meer opstarten:
Detailed technical information follows:
---
(Inner Exception)
Date and Time: 20-5-2008 14:12:34
Machine Name: WSJM01
IP Address: 192.168.213.132
Current User: MICROSIGNBV\jm

Application Domain: C:\AMF3000\OutlookConnect\
Assembly Codebase: file:///C:/WINDOWS/assembly/GAC_MSIL/AddinExpress.MSO.2005/4.0.1902.2005__4416dd98f0861965/AddinExpress.MSO.2005.dll
Assembly Full Name: AddinExpress.MSO.2005, Version=4.0.1902.2005, Culture=neutral, PublicKeyToken=4416dd98f0861965
Assembly Version: 4.0.1902.2005
Assembly Build Date: 17-3-2005 2:06:50

Exception Source: OutlookConnectv2
Exception Type: System.IO.FileLoadException
Exception Message: Kan bestand of assembly Interop.Redemption, Version=4.2.0.0, Culture=neutral, PublicKeyToken=7cb0c22fbff85059 of een van de afhankelijkheden hiervan niet laden. De manifestdefinitie van de gevonden assembly komt niet overeen met de assembly-verwijzing. (Uitzondering van HRESULT: 0x80131040)
Exception Target Site: StartUp

---- Stack Trace ----
OutlookConnectv2.AddinModule.StartUp()
AddinModule.cs: line 0213, col 07
OutlookConnectv2.AddinModule.AddinModule_AddinStartupComplete(sender As Object, e As EventArgs)
AddinModule.cs: line 0293, col 10, IL 0001 (0x1)
AddinExpress.MSO.ADXAddinModule.Extensibility.IDTExtensibility2.OnStartupComplete(custom As Array&)
AddinExpress.MSO.2005.dll: N 1025 (0x401) IL
---- Stack Trace ----
toon volledige bericht
Iemand enig idee hoe ik van dit probleem af kan komen?

http://hawvie.deviantart.com/


Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Je probleem is versioning. Zoals je weet heeft .NET de mogelijkheid om meerdere versies naast elkaar te draaien. Je kunt zowel een IIS installatie zowel een 1.1 als een 3.5 web applicatie draaien. Beide draaien dan probleemloos.

Echter ga je problemen krijgen als een applicatie en een referenced dll een verschillende versie van eenzelfde component willen laden. In elk application domain mag maar 1 versie van een component worden geladen.

De referenced dll is ook geen onderdeel van je solution (project reference), want anders had VS ook direct dat project opnieuw gecompileerd.

Een voorbeeld: Stel je maakt een component A. Vervolgens maak je een Component B welke afhankelijk is van component B. Vervolgens start je een nieuwe solution met daarin de projecten Component A en WinApp_1. WinApp_1 krijgt een binary reference (je selecteerd handmatig de dll bestand uit een (bin) directory). Vervolgens maak je een wijziging in Component A.

Component A krijgt hierdoor een nieuwer versie nummer. Als je probeert de applicatie te starten zullen beide componenten in de application domain van de windows applicatie worden geladen. Echter nu krijg je dus een versioning conflict en zal de applicatie niet willen starten (let op! je krijgt geen foutmelding tijdens het builden).

Je zult dus moeten achterhalen van welke component verschillende versies aanwezig zijn. Reflector is hierbij een goede hulp.

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:40
-> DTE

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 07-07 22:11
Bedankt, Niemand_Anders. Je had het inderdaad bij het goede eind. Het was inderdaad een versie probleem. Beide references naar het ActiveX object creeeren een eigen interop dll met dezelfde naam. Ik heb de activex references weggegooid, en in beide projecten een reference naar de interop dll toegevoegd. Tot zover lijkt dit de oplossing.

http://hawvie.deviantart.com/