Wie andere schon angedeutet, stdole.dll
ist eine primäre Interop-Assembly für eine Reihe von Office-COM-Interop-Komponenten. Sie können feststellen, warum es in Ihrem Projekt enthalten ist, indem Sie folgendermaßen vorgehen. In Visual Studio gehen Sie zu Tools > Options > Projects and Solutions > Build and Run
. Ändern Sie die Einstellung "MSBuild-Projekt Build-Ausgabe Ausführlichkeit" auf Detailed
. Reinigen Sie Ihr Projekt und erstellen Sie es neu.
Öffnen Sie das Ausgabefenster und suchen Sie nach stdole
. Sie sollten einen Abschnitt wie diese finden:
25> Dependency "stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
25> Resolved file path is "D:\Program Files (x86)\Microsoft Visual Studio 12.0\Visual Studio Tools for Office\PIA\Common\stdole.dll".
25> Reference found at search path location "{Registry:Software\Microsoft\.NETFramework,v4.0,AssemblyFoldersEx}".
25> For SearchPath "D:\Git\FoobarServices\Dependencies\Dependencies".
25> Considered "D:\Git\FoobarServices\Dependencies\stdole.winmd", but it didn't exist.
25> Considered "D:\Git\FoobarServices\Dependencies\stdole.dll", but it didn't exist.
25> Considered "D:\Git\FoobarServices\Dependencies\stdole.exe", but it didn't exist.
25> For SearchPath "{CandidateAssemblyFiles}".
25> Considered "Dependencies\CrystalDecisions.CrystalReports.Engine.dll", but its name "CrystalDecisions.CrystalReports.Engine" didn't match.
25> Considered "Dependencies\CrystalDecisions.Enterprise.Framework.dll", but its name "CrystalDecisions.Enterprise.Framework" didn't match.
25> Considered "Dependencies\CrystalDecisions.Enterprise.InfoStore.dll", but its name "CrystalDecisions.Enterprise.InfoStore" didn't match.
25> Considered "Dependencies\CrystalDecisions.ReportSource.dll", but its name "CrystalDecisions.ReportSource" didn't match.
25> Considered "Dependencies\CrystalDecisions.Shared.dll", but its name "CrystalDecisions.Shared" didn't match.
25> Considered "Dependencies\CrystalDecisions.Web.dll", but its name "CrystalDecisions.Web" didn't match.
25> For SearchPath "{TargetFrameworkDirectory}".
25> Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\stdole.winmd", but it didn't exist.
25> Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\stdole.dll", but it didn't exist.
25> Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\stdole.exe", but it didn't exist.
25> For SearchPath "{Registry:Software\Microsoft\.NETFramework,v4.0,AssemblyFoldersEx}".
25> Considered AssemblyFoldersEx locations.
25> Required by "CrystalDecisions.Web, Version=11.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL".
25> Required by "CrystalDecisions.ReportSource, Version=11.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL".
25> Required by "CrystalDecisions.CrystalReports.Engine, Version=11.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL".
25> Required by "CrystalDecisions.Enterprise.InfoStore, Version=11.5.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304".
25> The ImageRuntimeVersion for this reference is "v1.0.3705".
Sie sehen können, wo Visual Studio für die Montage als auch gesucht, was es am Boden erfordert. In meinem Fall handelt es sich um eine Reihe alter Crystal Reports-Assemblies.
Manchmal können Sie die Interop-Typen über die Abhängigkeiten einbetten, wie Tony es empfiehlt, aber nicht immer. Für mich unterstützen die Crystal Reports-Assemblies das nicht.
Ich habe dieses Problem (und die heimtückische scottsanpedro erwähnt) durch Kopieren der stdole.dll
(32KB, digital signiert) von C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\
in einen Ordner "Abhängigkeiten" in meinem Projekt. Ich habe die Datei zu meinem Projekt hinzugefügt und einen expliziten Verweis hinzugefügt (Verweis hinzufügen> Durchsuchen).Schließlich habe ich die Eigenschaften der neuen Referenz geöffnet und Embed Interop Types
auf True
gesetzt.
Dies scheint eine bessere Situation zu sein. Ich sollte nicht befürchten müssen, eine unsignierte Version der Assembly zu bekommen.
Wie wäre es damit? Mein erster Downvote. Ein Downvote ohne Feedback ist sehr unproduktiv. –
Ich bin an dieser Frage interessiert, weil stdole.dll auf allen Apps auftaucht, die ich mache. Ich veröffentliche mit Click-Once und es verursacht Fehler mit Visual Studio 2015. Es ist vielleicht nicht verwandt mit dieser Frage, aber andere Leute finden diese Frage möglicherweise nach dieser DLL suchen. Dieser andere Typ ersetzte es durch eine signierte Kopie in seinem: https://iznum.wordpress.com/2013/04/22/strong-name-signature-not-valid-for-this-assembly-stdole-dll/ – 249076
Ein anderer Typ hat einen Fehler dazu gepostet: https://connect.microsoft.com/VisualStudio/feedback/details/1658072/could-not-load-assembly-file-stdole-dll-that-were-not-actually-using – 249076