2009-02-17 7 views
53

Quando un utente tenta di eseguire l'applicazione, la nostra applicazione ClickOnce sta segnalando:Messaggio di errore "Impossibile installare o eseguire l'applicazione L'applicazione richiede stdole versione 7.0.3300.0 nel GAC"

in grado di installare o eseguire l'applicazione. L'applicazione richiede la versione 7.0.3300.0 dello stdole nel GAC.

È interessante notare che lo GAC (C: \ Windows \ assembly) non ha stdole installato in esso. Come ci arrivo?

Stiamo utilizzando .NET 3.5 ed è stato installato su questo computer.

risposta

26

Così si scopre che i file sono stati copiati NET C:\Program Files\Microsoft.NET\Primary Interop Assemblies\. Tuttavia, non sono mai stati registrati nello GAC.

Ho finito per trascinare manualmente i file in C:\Program Files\Microsoft.NET\Primary Interop Assemblies su C:\windows\assembly e l'applicazione ha funzionato su quel problema. È anche possibile farlo a livello di programmazione con Gacutil.

Quindi sembra che qualcosa sia successo a .NET durante l'installazione, ma questo sembra correggere il problema. Spero che aiuti qualcun altro a uscire!

63

provare ad andare al Pubblica scheda nelle proprietà del progetto e quindi selezionare i file Application tasto . Quindi impostare le seguenti proprietà:

  • File Nome di stdole.dll
  • Stato pubblicazione-Includere
  • Scarica Gruppo-Richiesto

Dopo di che devi ripubblicare la tua domanda.

Se il riferimento ha CopyLocal = true, il riferimento verrà pubblicato con l'applicazione. Se il riferimento ha CopyLocal = false, il riferimento sarà contrassegnato come prerequisito. Ciò significa che l'assembly deve essere installato nel GAC del client prima dell'installazione dell'applicazione ClickOnce.

Ci sono alcuni assembly che vengono installati nel GAC a causa dell'installazione di Visual Studio e non dell'installazione di .NET Framework. Questa potrebbe essere la tua situazione.

+1

Questo scenario non ha funzionato per me. Ora ricevo l'errore "La convalida dell'applicazione non è riuscita. Impossibile continuare." Dopo aver fatto clic sul pulsante "dettagli", viene visualizzato il messaggio "Firma del nome sicuro non valida per questo assembly stdole.dll". Presumo questo perché è una Dll di framework .NET. – proudgeekdad

+5

Non si dovrebbe ridistribuire stdole.dll http://msdn.microsoft.com/en-us/library/aa195478(office.11).aspx –

12

Ho avuto lo stesso problema con una distribuzione ClickOnce.

Ho risolto il problema aprendo la scheda "Pubblica" nelle proprietà del progetto e selezionando il pulsante "File dell'applicazione".

Ho quindi selezionato le opzioni:

  • 'Nome file' di 'stdole.dll'
  • 'Pubblica stato' a 'includere' e
  • 'Scaricare Group' a 'richiesta'.

Questo problema ha risolto il problema quando ho pubblicato nuovamente.

Spero che questo aiuto: D

1

Bene, non è possibile installare nel GAC utilizzando ClickOnce. Questo è documentato in this MSDN article.

+0

Magnus, grazie per l'articolo. Tuttavia, l'installazione di .NET è stata negativa e le DLL di base .NET non erano nel GAC come avrebbero dovuto essere. Se l'installazione di .NET è errata, ClickOnce non funzionerà. – proudgeekdad

+0

Ok, non è possibile installare stdole.dll in GAC utilizzando ClickONce. ma qualsiasi programma di installazione per installare stdole.dll ?? grazie – Kiquenet

0

Verificare se si sta davvero utilizzando il riferimento EnvDTE. In caso contrario, rimuovilo e ricompilalo.

0

Interessante, non avevo alcun riferimento allo stdole nel mio progetto, ma avevo ancora un utente che ha ricevuto l'errore. Ho dovuto aggiungere il riferimento, quindi modificare l'impostazione da includere. Spero che funzionerà.

0

A H2oRider - la vostra applicazione accede alla DLL Oracle nel GAC? Quello che ti consiglio di fare è questo: aggiungi la DLL al tuo progetto e imposta l'azione di costruzione su "contenuto" e imposta "copia su directory di output" su "copia sempre".

Quindi eliminare i riferimenti alla DLL nella GAC. Aggiungete nuovamente il riferimento, ma questa volta passate a quello appena aggiunto al vostro progetto.

Ora pubblicalo. L'applicazione cercherà la DLL localmente e la dll è inclusa nella distribuzione in modo che possa trovarla.

Se ciò non funziona, è possibile che non sia possibile utilizzare tale dll se inclusa in locale anziché in GAC. Questo è vero per alcuni assembly, come gli Office PIA. In tal caso, l'unico modo per distribuirlo è quello di avvolgerlo in un pacchetto di installazione & e utilizzare il Generatore manifest di Bootstrapper per trasformarlo in un prerequisito che è possibile pubblicare con la distribuzione ClickOnce.

4

Abbiamo riscontrato lo stesso problema con la nostra applicazione ClickOnce che utilizza Interop con Microsoft Office. È successo solo su alcuni computer della compagnia.

La correzione migliore che abbiamo trovato fuori era di modificare l'installazione di MS Office su computer problematici (attraverso i Programmi e funzionalità pannello) e assicurarsi che "caratteristica .NET programmabilità" (non sono sicuro del nome del componente - la nostra Microsoft_Office versioni non inglesi) è stato installato per ciascuna delle applicazioni MS Office (Excel, Word, Outlook, ecc.). Questo sembra non essere incluso in un'installazione predefinita.

Quindi il problema con stdole.dll è stato corretto.

Spero che questo possa essere d'aiuto.

+0

Questo ha funzionato per me. – lymber

1

La mia soluzione: ho aperto la cartella dei riferimenti in Solution Explorer (che mostra tutti i file) e per ogni assembly di cui l'installazione si è lamentata (il nome dell'assembly potrebbe non essere esattamente uguale al nome del file dell'assembly - all'interno object explorer, ma abbastanza facile da capire), ho cambiato la Copia locale a True. Ho finito per doverlo fare con ogni assembly Microsoft Office/COM -related.

+0

Sto avendo questo problema ora con un'app che ho scritto 4 o 5 anni fa, utilizzando VS 2010/.NET 4. Ho provato a fare quello che hai suggerito, ma non riesco nemmeno a trovare lo stdole.dll in Solution Explorer, anche con la visualizzazione di tutti i file. (E ho controllato il percorso su tutti i file di sistema a cui si fa riferimento nel progetto.) Quindi non so cosa sta succedendo. – Rod

+0

Ho anche questo problema. – tofutim

21

ho il mio caso, ho risolto questo problema andando al Pubblica scheda nelle proprietà del progetto e quindi selezionare i file dell'applicazione tasto .Poi basta:

Nota:Prima di applicare questa soluzione, assicurarsi di avere già (come ho fatto io), controllato tutti i progetti di soluzione e non ha trovato riferimenti a stdole.dll assemblaggio.

1 - Situato stdole.dll file;

2 - ha cambiato il suo status di Pubblicare a Escludi

3 - Dopo di che è necessario ripubblicare l'applicazione.

Questo problema è accaduto su un Visual Studio 2012, dopo la sua migrazione da Visual Studio 2010.

Speranza che aiuta.

+4

Questo è il modo in cui ho risolto il problema in VS2010. Compreso il file sicuramente non ha funzionato. Dovevo escluderlo manualmente. – Keith

+1

Nel mio caso, ho trovato che incluso il file si scontrerà se sul PC di destinazione è installata una versione diversa. Escludendo è la risposta. Grazie. (Utilizzo di VS 2013.) –

+0

Funziona su VS 2008. Grazie a – Ankhaa

Problemi correlati