Jag har fått ett "städ-projekt" i knät här på jobbet :-) En gammal .Net webapplikation skriven i VB.Net med lite buggar som behöver rättas. Bristfällig dokumentation, inkorrekta anvisningar hur man får igång källkoden osv. <b>Har sökt en del om detta på nätet och bl a hittat en del om att köra tlbimp.exe mm men det funkar inte. </b> Riktigt, ngn vidare beskrivning av felet var det inte. Var så trött på att inte få ordning på detta... :-) Ahaa! Ok, fel fil, det fattar jag nu men det funkar ändå inte. Om jag kör med activeds.tlb får jag en lång radda med fel av typen: Det lustiga är att det funkar på en annan maskin. Jag provade att kopiera den Interop.ActiveDs.dll som fanns där och att referera in den i mitt projekt istället men det blir ändå samma fel. Borde inte denna vara strong named om den funkar på en annan server?Referera assembly utan strong name?
Nåväl nu till problemet. Projektet refererar in Interop.ActiveDs.dll för att kunna göra uppslag och söka i företagets ActiveDirectory. Har uppenbarligen funkat bra tidigare men när jag försöker kompilera får jag meddelandet:
Unable to emit assembly: Referenced assembly 'Interop.ActiveDs' does not have a strong name.
Då mitt projekt kör med en snk-fil och strong name krävs även att allt man refererar in har strong name, det är så det funkar, så mycket har jag förstått. Jag kan lösa problemet genom att helt enkelt ta bort raden om AssemblyKeyFile i min AssemblyInfo.vb-fil men då är inte längre min applikation strong named.
Har sökt en del om detta på nätet och bl a hittat en del om att köra tlbimp.exe mm men det funkar inte. Måste finnas andra som stött på samma problem.
Eller är det en bra lösning att bara strunta i att köra med strong name? Känns inte så...
Jag kör Visual Studio 2003, framework 1.1. Har testat både på Windows 2000 och Windows 2003 men får samma problem i båda miljöerna.Sv: Referera assembly utan strong name?
<i>Funkar inte</i> är ingen bra felbeskrivning.. Men att köra tlbimp <b>med /keyfile:[FileName]</b> är det du ska göra.. Sv:Referera assembly utan strong name?
Detta fel får jag:
TlbImp error: The input file C:\Dev\SEML_PRAKT\Applications\Prakt\Source\Server\Prakt4\tmp\Interop.ActiveDs.dll in not a valid type library
Vad beror detta på?Sv: Referera assembly utan strong name?
Du matar alltså tlbimp med fel fil, <b>Interop.ActiveDs.dll</b> är den fil som tlbimp skapar, det som den vill ha är type libraryn, antagligen ActiveDs.dll alternativt ActiveDs.tlb, när du matar den med rätt input så bör det funka.Sv:Referera assembly utan strong name?
TlbImp warning: The type library importer could not convert the signature for the member 'ADS_OCTET_STRING.lpValue'
och av typen:
TlbImp warning: At least one of the arguments for 'IPrivateDispatch.ADSIGetIDsOfNames' can not be marshaled by the runtime marshaler. Such arguments will therefore be passed as a pointer and may require unsafe code to manipulate.
Har inte testat att använda den resulterande filen men det låter lite osäkert.
Om jag kör med filen activeds.dll får jag felet:
TlbImp error: The input file 'C:\Temp\Prakt\activeds.dll' is not a valid type library
Jag får ingen ordning på detta.Sv: Referera assembly utan strong name?