Ho un problema con diverse DLL VC++, che dovrei includere nel mio progetto .NET/C#. Una DLL VC++ è una DLL C++/CLI, che utilizzo come interfaccia pubblica dal mio progetto .NET. Le altre DLL sono scritte in C++ nativo. Non ho accesso alla fonte delle DLL VC++, devo solo usarle.WinSxS non riesce a caricare DLL VC++
Ho creato un progetto di test .NET e ho fatto riferimento alla DLL C++/CLI. Nessun problema, il compilatore è fortunato, fantastico. C'è solo un problema: quando avvio l'EXE del programma .NET, ottengo errori sulle DLL C++ a causa di DLL core VC++ mancanti. sxstrace mostra la seguente (abbreviato):
INFO: Reference: Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195"
INFO: Reference: Microsoft.VC80.OpenMP,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195"
INFO: Resolving reference Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195"
...
ERROR: Cannot resolve reference Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195".
Ora io non sono pazzo e provato diverse cose. Ho letto molto su WinSxS per avere una comprensione più profonda di cosa sta succedendo. Ora sono arrivato al punto, dove sta diventando stanco per me. Il sistema in cui voglio eseguire il programma ha il pacchetto Redistributable VC++ nella versione corrente 8.0.50727.762 (SP1) installato. So che esiste un file di criteri per Microsoft.VC80.CRT in winsx che reindirizza tutte le versioni di questo assembly alla versione corrente 8.0.50727.762 (questa è la soluzione per il problema in http://blogs.msdn.com/b/nikolad/archive/2007/03/29/a-solution-to-two-references-to-different-versions-of-crt-mfc-atl-in-one-application-manifest-file.aspx). Ma come dice l'errore sopra, questo file di politica non sembra funzionare o non viene preso in considerazione. Il sistema vuole solo trovare la versione 8.0.50727.6195 dell'assembly.
Questa è la prima domanda: qual è il problema qui? Dopo aver capito, ho potuto risolvere il problema iniziale ...
La mancata corrispondenza versione è cristallina nel messaggio. Vuole 8.0.50727.6195, hai 8.0.50727.762. Vai a search.microsoft.com e inserisci "8.0.50727.6195" nella casella di ricerca. –
La domanda è se è possibile "convincere" l'applicazione ad accettare 762 anziché 6195. – Dialecticus
In questo caso non sono sicuro del controllo delle versioni di Microsoft. Non ho trovato un pacchetto Redist VC++ 2005 con versione 8.0.50727.6195 in Download Microsoft, l'attuale pacchetto Redist VC++ 2005 è disponibile nella versione 8.0.50727.762. Se 762 è per versione superiore a 6195, dovrebbe essere come ho scritto: il file di politica di WinSxS dovrebbe reindirizzare da 6195 a 762, ma non è così. – Matthias