Domanda

Ho un assembly con il seguente manifest incorporato:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>

Su una delle mie macchine questo assembly non funziona (l'assembly non riesce a caricarsi). Aprire questo nel walker delle dipendenze mi dà il seguente messaggio di errore:

Error: The Side-by-Side configuration information for "SomeAssembly.dll" contains errors. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem (14001).

L'assembly identico funziona bene su un'altra macchina e non ottengo alcun errore con il walker delle dipendenze.

Per quanto posso capire, il problema è dovuto al fatto che la prima macchina non ha una dipendenza di qualche tipo (ad esempio il ridistribuibile di MSVCR), tuttavia ho già verificato e il ridistribuibile di Microsoft Visual C ++ 2005 è installato correttamente su entrambi macchine.

Come posso capire qual è la dipendenza mancante?

L'unica cosa che ho notato è che la directory WinSxS sulla macchina funzionante ha una voce aggiuntiva:

x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_473666fd
È stato utile?

Soluzione

Ordinato!

Qualcuno mi ha gentilmente sottolineato che il "& Some; SomeAssembly.dll "" menzionato in Dependency Walker era in realtà una DLL diversa da quella che ho aperto in Dependency Walker! (Ops!)

Guardando il manifest per questo assembly posso vedere che il problema è dovuto al fatto che Microsoft.VC80.CRT v8.0.50727.4053 è mirato, ma non presente su questa macchina. (Installato tramite un aggiornamento di sicurezza).

Altri suggerimenti

Dopo aver riscontrato lo stesso problema, ho notato che gli aggiornamenti applicati allo sviluppo dell'installazione di Visual Studio potrebbero indirizzare alcuni aggiornamenti del computer di destinazione:

Aggiornamenti di Visual Studio

Ad esempio, l'aggiornamento evidenziato sopra risolve questa domanda specifica.

Instaed di inoltro fianco a fianco, ti suggerirei di non includere il file manifest " all'interno dell'assemblea. Soprattutto perché non puoi essere sicuro che il PC che stai per installare il tuo software sia aggiornato alla versione inclusa nel tuo manifest.

Puoi disabilitarlo impostando la proprietà del progetto " Linker \ Manifest File \ Generate Manifest " a " No " ;.

Spero che questo possa aiutare. Buona fortuna

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top