2009-02-17 5 views
53

Wenn ein Benutzer die Anwendung, unsere Clickonce-Anwendung auszuführen versucht berichtet:Fehlermeldung „Kann nicht installieren oder die Anwendung auszuführen Die Anwendung Stdole Version 7.0.3300.0 im GAC erfordert“

kann nicht installieren oder führen Sie die Anwendung aus. Die Anwendung benötigt die stdole Version 7.0.3300.0 im GAC.

Es ist interessant zu beachten, dass die GAC (C: \ Windows \ Assembly) nicht in ihm stdole installiert hat. Wie bekomme ich es hin?

Wir verwenden .NET 3.5, und es wurde auf diesem Computer installiert.

Antwort

26

So stellt sich heraus, dass die .NET-Dateien C:\Program Files\Microsoft.NET\Primary Interop Assemblies\ kopiert wurden. Sie wurden jedoch nie in der GAC registriert.

Ich landete manuell die Dateien in C:\Program Files\Microsoft.NET\Primary Interop Assemblies zu C:\windows\assembly ziehen und die Anwendung arbeitete auf dieser Problemmaschine. Sie können dies auch programmgesteuert mit Gacutil tun.

So scheint es, dass etwas mit .NET während der Installation passiert ist, aber dies scheint das Problem zu beheben. Ich hoffe das hilft jemand anderem aus!

63

Versuchen Sie, die gehen Veröffentlichen Registerkarte in den Projekteigenschaften und wählen Sie dann die Anwendungsdateien Taste. Dann legen Sie die folgenden Eigenschaften:

  • Dateiname von stdole.dll
  • Publish Status-Fügen
  • Herunterladen Gruppe-Required

Danach Sie müssen Ihre Bewerbung erneut veröffentlichen.

Wenn die Referenz CopyLocal = true hat, wird die Referenz mit der Anwendung veröffentlicht. Wenn die Referenz CopyLocal = false hat, wird die Referenz als Voraussetzung markiert. Dies bedeutet, dass die Assembly im GAC des Clients installiert werden muss, bevor die ClickOnce-Anwendung installiert wird.

Es gibt einige Assemblys, die aufgrund der Visual Studio-Installation und nicht der .NET Framework-Installation im GAC installiert werden. Dies könnte deine Situation sein.

+1

Dieses Szenario hat nicht für mich funktioniert. Ich erhalte jetzt den Fehler "Application Validation war nicht erfolgreich. Konnte nicht fortfahren." Nach dem Klicken auf die Schaltfläche "Details" erhalte ich "Starke Namensunterschrift für diese Assembly stdole.dll nicht gültig". Ich nehme an, dies ist, weil es eine .NET Framework Dll ist. – proudgeekdad

+5

Sie sollten stdole.dll nicht weiterverbreiten http://msdn.microsoft.com/en-us/library/aa195478(office.11).aspx –

12

Ich hatte das gleiche Problem mit einer ClickOnce-Bereitstellung.

Ich löste das Problem, indem ich in den Projekteigenschaften auf die Registerkarte "Veröffentlichen" gehe und dann die Schaltfläche "Anwendungsdateien" auswählte.

wähle ich dann die Optionen:

  • 'Dateiname' von 'stdole.dll'
  • 'Publish Status' auf 'Sie' und
  • 'Herunterladen Gruppe' auf 'Erforderlich'.

Dies behoben mein Problem, wenn ich neu veröffentlicht.

Ich hoffe, das Ihnen helfen: D

1

Nun, Sie können nicht mit ClickOnce auf dem GAC installieren. Dies ist in this MSDN article dokumentiert.

+0

Magnus, danke für den Artikel. Die Installation von .NET war jedoch schlecht und die Kern-.NET-DLLs waren nicht in der GAC, wie sie hätten sein sollen. Wenn die .NET-Installation fehlerhaft ist, funktioniert ClickOnce nicht. – proudgeekdad

+0

Ok, kann nicht installieren stdole.dll in GAC mit ClickONce. aber jedes Installationsprogramm für die Installation stdole.dll? thx – Kiquenet

0

Überprüfen Sie, ob Sie wirklich EnvDTE-Referenz verwenden. Wenn nicht, entferne es und kompiliere neu.

0

Interessant, ich hatte keine Referenzen zu Stdole in meinem Projekt, aber ich hatte einen Benutzer immer noch den Fehler erhalten. Ich musste die Referenz hinzufügen und dann die Einstellung ändern. Hoffentlich wird das funktionieren.

0

Zum H2oRider - greift Ihre Anwendung auf die Oracle-DLL im GAC zu? Ich empfehle Ihnen Folgendes: Fügen Sie die DLL Ihrem Projekt hinzu und legen Sie die Build-Aktion auf "content" fest und setzen Sie "copy to output directory" auf "copy always".

Dann löschen Sie Ihre Referenzen auf die DLL in der GAC. Fügen Sie die Referenz erneut hinzu, aber führen Sie dieses Mal einen Drilldown zu dem aus, den Sie gerade zu Ihrem Projekt hinzugefügt haben.

Jetzt veröffentlichen Sie es. Die Anwendung sucht lokal nach der DLL, und die DLL ist in der Bereitstellung enthalten, damit sie sie findet.

Wenn dies nicht funktioniert, kann es sein, dass Sie diese DLL nicht verwenden können, wenn sie lokal und nicht im GAC enthalten sind. Dies gilt für einige Assemblys wie die Office-PIAs. In diesem Fall besteht die einzige Möglichkeit zum Bereitstellen darin, es in ein Setup-Paket & zu verpacken und den Bootstrapper-Manifestgenerator zu verwenden, um es zu einer Voraussetzung zu machen, die Sie mit der ClickOnce-Bereitstellung veröffentlichen können.

4

Wir hatten das gleiche Problem mit unserer ClickOnce-Anwendung, die Interop mit Microsoft Office verwendet. Es geschah nur auf ein paar Computern in der Firma.

Die beste Fix fanden wir heraus, war MS Office-Installation auf problematischen Computer (über die Programme und Funktionen Panel) und stellen Sie sicher, dass „.NET Programmierbarkeit Feature“ (nicht sicher, ob der Name der Komponente ändern - unsere Microsoft_Office Versionen sind nicht Englisch) wurde für jede der MS Office-Anwendungen (Excel, Word, Outlook, etc.) installiert. Dies scheint in einer Standardinstallation nicht enthalten zu sein.

Dann wurde das Problem mit stdole.dll behoben.

Ich hoffe, das könnte helfen.

+0

Das hat bei mir funktioniert. – lymber

1

Meine Lösung: Ich öffnete den Verweisordner im Projektmappen-Explorer (mit allen Dateien) und für jede Assembly, über die sich die Installation beschwerte (der Name der Assembly stimmt möglicherweise nicht genau mit dem Dateinamen der Assembly überein) Object Explorer, aber leicht genug, um herauszufinden), änderte ich die Kopieren Local zu True. Ich musste dies mit jeder Microsoft Office/COM-Assembly tun.

+0

Ich habe dieses Problem jetzt mit einer App, die ich vor 4 oder 5 Jahren geschrieben habe, mit VS 2010/.NET 4. Ich habe versucht, das zu tun, was Sie vorgeschlagen haben, kann aber nicht einmal die stdole.dll im Solution Explorer finden mit allen Dateien anzeigen. (Und ich habe den Pfad zu allen Systemdateien überprüft, auf die im Projekt verwiesen wird.) Ich weiß also nicht, was passiert. – Rod

+0

Ich habe auch dieses Problem. – tofutim

21

ich mein Fall, ich löste dieses Problem auf die Registerkarte in den Projekteigenschaften und wählen Sie dann die Anwendungsdateien Schaltfläche Veröffentlichen gehen.Dann einfach:

Hinweis:Bevor Sie diese Lösung anwenden, stellen Sie sicher, dass Sie bereits haben (wie ich), überprüft alle Projekte Ihre Lösung ist und hat keine Hinweise auf stdole.dll Montage.

1 - Befindet sich stdole.dll Datei;

2 - Änderung seiner Publish Status zu ausschließen

3 - Danach Sie benötigen Ihre Anwendung erneut veröffentlichen.

Dieses Problem geschah auf einem Visual Studio 2012, nach der Migration von Visual Studio 2010.

Hoffe, es hilft.

+4

So habe ich das Problem in VS2010 behoben. Das Einbinden der Datei hat definitiv nicht funktioniert. Ich musste es manuell ausschließen. – Keith

+1

In meinem Fall habe ich festgestellt, dass die Datei zusammenfällt, wenn auf dem Ziel-PC eine andere Version installiert ist. Ohne es ist die Antwort. Vielen Dank. (Using VS 2013.) –

+0

Dies funktioniert auf VS 2008. Danke – Ankhaa

Verwandte Themen